FAQ
10.0.5
Rother OSS GmbH
https://otobo.de/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
Improve the handling of scroll bars and article size in Public- and CustomerFAQZoom.
Some fixes for the service functionality.
Enable assignment of FAQ articles to services.
Added the public FAQ and customer notifications css. Fixed "Latest articles" text for searches.
Initial OTOBO port.
Initial OTOBO release.
The FAQ/knowledge base.
Die FAQ-/Wissensdatenbank.
A GyIK/tudásbázis csomag.
10.0.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTOBO package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTOBO-Paket FAQ zu installieren.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está a punto de instalar el paquete FAQ de OTOBO.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az FAQ OTOBO csomag telepítésére készül.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>NOTICE</strong>
<br/>
<br/>
The menu items that were added by this package will be visible after you log-in to the system again.
<br/>
<br/>
To create new FAQ article you need to create categories and define the permission who can access categories.
<br/>
<br/>
If you are using the FAQ approval feature, you need to create a group and define a queue.
You will find further information in the sysconfig in FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>HINWEIS</strong>
<br/>
<br/>
Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
<br/>
<br/>
Um FAQ Artikel erstellen zu können müssen zuerst Kategorien erstellt und die Berechtigungs-Gruppen dieser Kategorien definiert werden.
<br/>
<br/>
Wenn Sie das FAQ-Freigabe-Feature verwenden möchten, müssen Sie eine Gruppe dafür anlegen und eine Queue definieren.
Weitere Informationen finden Sie in der Sysconfig unter FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>AVISO</strong>
<br/>
<br/>
Los elementos del menu que fueron agregados por este paquete serán visibles después de que cierre y abra su sesión de nuevo.
<br/>
<br/>
Para crear un nuevo artículo FAQ usted necesita crear una categoría y definir los permisos de quienes pueden acceder esta categoría.
<br/>
<br/>
Si usted está utilizando la funcionalidad de "FAQ approval", necesita crear un grupo y definir una cola.
Encontrará más información en sysconfig, en FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>FIGYELMEZTETÉS</strong>
<br/>
<br/>
Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
<br/>
<br/>
Egy új GyIK bejegyzés létrehozásához kategóriákat kell létrehoznia, és meg kell határoznia a jogosultságokat, hogy ki férhet hozzá a kategóriákhoz.
<br/>
<br/>
Ha használja a GyIK jóváhagyás szolgáltatást, akkor létre kell hoznia egy csoportot, és meg kell határoznia egy várólistát.
További információkat fog találni a rendszerbeállításokban a FAQ -> Core::Approval alcsoportban.
<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/>
All Dynamic Fields created for this package and its data will be deleted permanently.
<br/>
<br/>
The groups 'faq' and 'faq_admin' that were created during package installation will be deactivated.
You can activate these groups again in the admin area.
<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/>
Alle dynamischen Felder für dieses Paket erstellt und seine Daten dauerhaft gelöscht werden.
<br/>
<br/>
Die von diesem Paket angelegten Gruppen 'faq' und 'faq_admin' werden deaktiviert.
Sie können jederzeit im Admin-Bereich wieder aktiviert werden.
<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 se perderán irrevocablemente!.
<br/>
<br/>
Todos los Campos Dinámicos creados para este paquete y sus datos serán borrados permanentemente.
<br/>
<br/>
Los grupos 'faq' y 'faq_admin' que fueron creados durante la instalación del paquete serán desactivados.
Usted puede activar estos grupos nuevamente en el área de admin.
<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/>
A csomaghoz létrehozott összes dinamikus mező és azok adatai véglegesen törölve lesznek.
<br/>
<br/>
A csomagtelepítés során létrehozott „faq” és „faq_admin” csoport ki lesz kapcsolva.
Ezeket a csoportokat az adminisztrációs területen tudja ismét bekapcsolni.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to upgrade the OTOBO package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTOBO-Paket FAQ zu aktualisieren.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está apunto de actualizar el paquete FAQ de OTOBO.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az FAQ OTOBO 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)->CodeInstall();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgrade();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeSpecial();
# 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();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_5_0_92();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUninstall();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeReinstall();
2021-02-04 16:29:40
opms
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBPVE9CTyBpcyBhIHdlYi1iYXNlZCB0aWNrZXRpbmcgc3lzdGVtIGZvciBzZXJ2aWNlIG9yZ2FuaXNhdGlvbnMuCiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwojIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5kZS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBVc2UgLi4vLi4vIGFzIGxpYiBsb2NhdGlvbi4KdXNlIEZpbmRCaW4gcXcoJEJpbik7CnVzZSBsaWIgIiRCaW4vLi4vLi4iOwp1c2UgbGliICIkQmluLy4uLy4uL0tlcm5lbC9jcGFuLWxpYiI7CnVzZSBsaWIgIiRCaW4vLi4vLi4vQ3VzdG9tIjsKCiMgMD1vZmY7MT1vbjsKbXkgJERlYnVnID0gMDsKCnByaW50ICJsb2NhdGlvbjogcHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3JlclxuIjsKcHJpbnQgIlxuIjsKcHJpbnQgIjxhIGhyZWY9J3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXInPm1vdmVkPC9hPlxuIjsK
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RPQk8KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMiBSb3RoZXIgT1NTIEdtYkgsIGh0dHA6Ly9vdG9iby5vcmcvCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFGRkVSTyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiMgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCiMgb3Igc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBVc2UgLi4vLi4vIGFzIGxpYiBsb2NhdGlvbi4KdXNlIEZpbmRCaW4gcXcoJEJpbik7CnVzZSBsaWIgIiRCaW4vLi4vLi4iOwp1c2UgbGliICIkQmluLy4uLy4uL0tlcm5lbC9jcGFuLWxpYiI7CnVzZSBsaWIgIiRCaW4vLi4vLi4vQ3VzdG9tIjsKCnVzZSB2YXJzIHF3KEBJTkMpOwoKIyAwPW9mZjsxPW9uOwpteSAkRGVidWcgPSAwOwoKIyBDaGVjayBASU5DIGZvciBtb2RfcGVybCAoYWRkIGxpYiBwYXRoIGZvciAicmVxdWlyZSBtb2R1bGUiISkuCnB1c2ggKEBJTkMsICIkQmluLy4uLy4uIiwgIiRCaW4vLi4vLi4vS2VybmVsL2NwYW4tbGliIik7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5mcGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyXG4iOwpwcmludCAiXG4iOwpwcmludCAiPGEgaHJlZj0ncHVibGljLmZwbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXInPm1vdmVkPC9hPlxuIjsK
iVBORw0KGgoAAAANSUhEUgAAA1wAAANwCAIAAAC06fzeAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1iT5/o48DsJhCnIVpkyBGSLilRUNogFLYoiYp3Yak+to1Xb+tXqUetercdZxUktqIALQSjKqkdBQFGLIqJWZKkJO2T8/nja95eThBAZYXh/rnOdK7zjeV9iAw/Pew+aQCAAhBBCCCH0YaN39w0ghBBCCKHuh5NChBBCCCGEk0KEEEIIIYSTQoQQQgghBDgpRAghhBBCgJNChBBCCCEEOClECCGEEEKAk0KEEEIIIQQ4KUQIIYQQQgCgIH13cXGxfO4DSVFbW9vdt4AQQgihvsDV1bW1XW1MClFPYGk1rLtvASGEEEK93pPHeVL24uNjhBBCCCGEk0KEEEIIISSfSWFtbe2zZ894PJ4croUQQgghhNrhvSeFtbW11tbW9kJ+/fVXsuvt27d2dna7d++mDq6qqoqIiAgODl6+fPlHH320a9cuPp8vffwbN24sXLiwsbExJibmfe8NIYQQQgi1TzsTTQoLC+l00QnlpUuXHB0dExMTv/rqKxqNBgDz588PDg6eP38+AFRXV8+ePVtHR+fTTz+VMvKoUaOcnJzq6+sPHTo0ffr09t0eQgghhBB6L535+PjChQurVq2i0+l5eXkA8PLlSwAgM0IA0NXVjYiISE9PFznr0KFD/v7+UVFR27Ztu3nzZlFR0f79+1euXFlVVfXNN9904u0hhBBCCKHWtHOlcP369eRF//79lyxZAgCPHz+uq6tzcnIKCgq6ePGiq6vrzZs37e3thc/y9fXdvHlzY2OjiooK2VJaWnrt2rW4uLjnz5/Pnj3b0tJSIBA8f/58y5YtYWFh27Zt68C3hhBCCCGEZNXOlUJnZ2cXFxcXF5ehQ4eSLfHx8TY2NpmZmdra2leuXGlpaamurm5oaBA+S1VVtbm5WXhLamrqxIkTNTQ07O3tP/roo/bdDEIIIYQQ6qB2rhSGhIQIxxTyeLzExMTRo0cnJSUBgKqqakZGhoWFxfHjx1taWhQVFQUCQU1NTWFhoZWVFbVMCAAlJSUuLi7ktaamZge+EYQQQggh1H6dE1OYnZ1tYGCwefPmDRs2bNiwISIiIiEhwc/PT11d/fjx4wDw/PnzGTNmbN68eenSpcInWltbp6en8/n8urq6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B6b9BcJwImP3oPpWQEBAX48Of1EIAB0dT/9RehWoVAaDTqfi2mpkkyuUMpkMFMoZQfyxY62Hezp9wtSNXCMlY8YD0/7CYDiRkRsBRSFCCCGEEBpq+otC/Jk7hBBCCCGERSFCCCGEEMKiECGEEEIIARaFCCGEEEIIsChECCGEEEKARSFCCCGEEAIsChFCCCGEEGBRiBBCCCGEAItChBBCCCEEWBQihBBCCCHAohAhhBBCCAEWhQghhBBCCLAoRAghhBBCgEUhQgghhBACLAoRQgghhBBgUYgQQgghhACLQoQQQgghBFgUIoQQQgghAKD32+NB9a0XMA+EEEIIITSMKEqlcrjngBBCCCGEhhnuPkYIIYQQQlgUIoQQQgghLAoRQgghhBBgUYgQQgghhACLQoQQQgghBFgUIoQQQgghwKIQIYQQQggBFoUIIYQQQggA/j9rfWeWKWKoeAAAAABJRU5ErkJggg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJBcHBsaWNhdGlvbiI+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFnZW50OjpTdGF0ZVR5cGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+ZXh0ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6UHVibGljOjpTdGF0ZVR5cGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+cHVibGljPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeU5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBjYXRlZ29yeSBuYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPkZBUTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlDb21tZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgY2F0ZWdvcnkgbmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5kZWZhdWx0IGNvbW1lbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpJdGVtOjpWb3Rpbmc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAwIj41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3NSI+NDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNTAiPjM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6Vm90aW5nOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6SXRlbTo6Vm90aW5nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImludGVybmFsIiBUcmFuc2xhdGFibGU9IjEiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImV4dGVybmFsIiBUcmFuc2xhdGFibGU9IjEiPmV4dGVybmFsIChjdXN0b21lcik8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6UGF0aDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IEZBUSBwYXRoIHllcy9uby48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0RGVjaW1hbFBsYWNlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjI8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHRDb2xvcnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPnJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNzAiPm9yYW5nZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAwIj5ncmVlbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiIFRyYW5zbGF0YWJsZT0iMSI+cHVibGljIChwdWJsaWMpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDaGFuZ2U6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImludGVybmFsIiBUcmFuc2xhdGFibGU9IjEiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImV4dGVybmFsIiBUcmFuc2xhdGFibGU9IjEiPmV4dGVybmFsIChjdXN0b21lcik8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InB1YmxpYyIgVHJhbnNsYXRhYmxlPSIxIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENoYW5nZTo6U2hvd1N1YkNhdGVnb3J5SXRlbXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDaGFuZ2U6OkxpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4zPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q3JlYXRlOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+aW50ZXJuYWwgKGFnZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZXh0ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIiBUcmFuc2xhdGFibGU9IjEiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q3JlYXRlOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENyZWF0ZTo6TGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjM8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+aW50ZXJuYWwgKGFnZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZXh0ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIiBUcmFuc2xhdGFibGU9IjEiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpUb3AxMDo6TGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvd1N1YkNhdGVnb3J5SXRlbXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RkFRSG9vayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+RkFRIzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpUaXRsZVNpemUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDN9JCI+NTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RGVmYXVsdDo6U3RhdGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9ImludGVybmFsIChhZ2VudCkiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJpbnRlcm5hbCAoYWdlbnQpIiBUcmFuc2xhdGFibGU9IjEiPmludGVybmFsIChhZ2VudCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9ImV4dGVybmFsIChjdXN0b21lcikiIFRyYW5zbGF0YWJsZT0iMSI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0icHVibGljIChhbGwpIiBUcmFuc2xhdGFibGU9IjEiPnB1YmxpYyAoYWxsKTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFwcHJvdmFsUmVxdWlyZWQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkFwcHJvdmFsPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpBcHByb3ZhbEdyb3VwIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpBcHByb3ZhbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj51c2VyczwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpBcHByb3ZhbFF1ZXVlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlF1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpBcHByb3ZhbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5GQVFfQXBwcm92YWw8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRTdWJqZWN0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6QXBwcm92YWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+RkFRIGFwcHJvdmFsIHJlcXVpcmVkIGZvciBGQVEjICZsdDtPVE9CT19GQVFfTlVNQkVSJmd0OzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldEJvZHkiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpBcHByb3ZhbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iVGV4dGFyZWEiPkhpLAoKYSBuZXcgRkFRIGFydGljbGUgbmVlZHMgeW91ciBhcHByb3ZhbCBiZWZvcmUgaXQgY2FuIGJlIHB1Ymxpc2hlZC4KCiAgRkFRIyAgIDogJmx0O09UT0JPX0ZBUV9OVU1CRVImZ3Q7CiAgVGl0bGUgIDogJmx0O09UT0JPX0ZBUV9USVRMRSZndDsKICBBdXRob3IgOiAmbHQ7T1RPQk9fRkFRX0FVVEhPUiZndDsKICBTdGF0ZSAgOiAmbHQ7T1RPQk9fRkFRX1NUQVRFJmd0OwoKSWYgeW91IHdhbnQgdG8gZG8gdGhpcywgY2xpY2sgb24gdGhpcyBsaW5rOgoKJmx0O09UT0JPX0NPTkZJR19IdHRwVHlwZSZndDs6Ly8mbHQ7T1RPQk9fQ09ORklHX0ZRRE4mZ3Q7LyZsdDtPVE9CT19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9Jmx0O09UT0JPX0ZBUV9JVEVNSUQmZ3Q7CgpZb3VyIE9UT0JPIE5vdGlmaWNhdGlvbiBNYXN0ZXIKICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0UHJpb3JpdHkiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpBcHByb3ZhbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlByaW9yaXR5IiBWYWx1ZVJlZ2V4PSIiPjMgbm9ybWFsPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6QXBwcm92YWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkVudGl0eSIgVmFsdWVFbnRpdHlUeXBlPSJTdGF0ZSIgVmFsdWVSZWdleD0iIj5uZXc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRUeXBlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpBcHByb3ZhbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiPlVuY2xhc3NpZmllZDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpJdGVtOjpGaWVsZDEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6Okl0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+cHVibGljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN5bXB0b208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6SXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHJvYmxlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Tb2x1dGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MzAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQ0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GaWVsZDQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6SXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RmllbGQ1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj41MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpJdGVtOjpGaWVsZDYiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6Okl0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+aW50ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29tbWVudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OlBvc3NpYmxlTGluayMjIzgzMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhICdGQVEnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgJ0ZBUScgb2JqZWN0cyB1c2luZyB0aGUgJ05vcm1hbCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+Tm9ybWFsPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OlBvc3NpYmxlTGluayMjIzgzMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhICdGQVEnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgJ0ZBUScgb2JqZWN0cyB1c2luZyB0aGUgJ1BhcmVudENoaWxkJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5QYXJlbnRDaGlsZDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdUaWNrZXQnIG9iamVjdHMgdXNpbmcgdGhlICdOb3JtYWwnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdUaWNrZXQnIG9iamVjdHMgdXNpbmcgdGhlICdQYXJlbnRDaGlsZCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+UGFyZW50Q2hpbGQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudEZBUUV4cGxvcmVyIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkZBUS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFFeHBsb3JlciMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TWVudTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+SXRlbUFyZWE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5mPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjM1MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBFeHBsb3JlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPng8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+OTEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuV2lkZ2V0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5GQVFab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkN1c3RvbWVyLlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNDdXN0b21lckZBUUV4cGxvcmVyIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NzAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InN2Z0ljb24iPnZhci9odHRwZC9odGRvY3Mvc2tpbnMvQ3VzdG9tZXIvZGVmYXVsdC9pbWcvZmFxLnN2ZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5TdWJtZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij54PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjcxMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU2VhcmNoUGFnZVNob3duIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj4yMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRkFRSUQiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDYXRlZ29yeSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTGFuZ3VhZ2UiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1RpdGxlU2l6ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6OkNvbW1vblBhcmFtIyMjQWN0aW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPlB1YmxpY0ZBUUV4cGxvcmVyPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgRkFRLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5XaWRnZXQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkZBUVpvb20uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNQdWJsaWNGQVFFeHBsb3JlciMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij54PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjQwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRkFRSUQiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDYXRlZ29yeSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTGFuZ3VhZ2UiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVJTUyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlB1YmxpYyBGQVEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpQdWJsaWNGQVFSU1MjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6SFRNTCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6SXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpIZWFkZXJNZXRhTW9kdWxlIyMjMy1GQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkFnZW50RkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpDdXN0b21lckZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5DdXN0b21lckZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZSMjIzMtRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SGVhZGVyTWV0YTo6UHVibGljRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPlB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoZXJlIHRoZSAnSW5zZXJ0IEZBUScgbGluayB3aWxsIGJlIGRpc3BsYXllZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyRWxlbWVudFBvc3Q6OkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVidWciPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRlbXBsYXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRDbG9zZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldENvbXBvc2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRFbWFpbCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEVtYWlsT3V0Ym91bmQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRGb3J3YXJkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0RnJlZVRleHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXROb3RlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0T3duZXIiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQZW5kaW5nIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UGhvbmUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRQcmlvcml0eSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFJlc3BvbnNpYmxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpPdXRwdXRGaWx0ZXJUZXh0QXV0b0xpbmsjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVnRXhwIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPihGQVEpWyNcc10qPzEoXGR7NH0pPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVSTDEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVUkwiPi9vdG9iby9pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0mbHQ7TUFUQ0gyJmd0OzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbWFnZSI+L290b2JvLXdlYi9za2lucy9BZ2VudC9kZWZhdWx0L2ltZy9oZWxwLXNtYWxsLnBuZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPl9ibGFuazwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRGQVFBZGQjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRkFRLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUFkZCMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5OZXcgRkFRIEFydGljbGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5iPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjkyMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUVkaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEVkaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRGQVFFZGl0IyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkZBUS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUxhbmd1YWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudEZBUUxhbmd1YWdlIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUxhbmd1YWdlIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2UgTWFuYWdlbWVudC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZSBNYW5hZ2VtZW50PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPmw8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+OTQwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQ2F0ZWdvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50RkFRQ2F0ZWdvcnkjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRQ2F0ZWdvcnkjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeSBNYW5hZ2VtZW50LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkNhdGVnb3J5IE1hbmFnZW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+ZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj45NTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudEZBUVNlYXJjaCMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkZBUS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIEZBUS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPm9uY2xpY2s9IkNvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coJ0FnZW50RkFRU2VhcmNoJyk7IGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IH0gZWxzZSB7IHdpbmRvdy5ldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyB9IHJldHVybiBmYWxzZTsiPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+ejwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj45NjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2hTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRIFNtYWxsLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRU2VhcmNoU21hbGwjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaCMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU6OlNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJeKD86QWdlbnR8QWRtaW4pRkFRIj5BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OkZBUU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU92ZXJ2aWV3OjpTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0IiBUcmFuc2xhdGFibGU9IjEiPlM8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJGQVFJRCIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNhdGVnb3J5IiBUcmFuc2xhdGFibGU9IjEiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJMYW5ndWFnZSIgVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJGQVFJRCIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNhdGVnb3J5IiBUcmFuc2xhdGFibGU9IjEiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJMYW5ndWFnZSIgVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1RpdGxlU2l6ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1Nob3dJbnZhbGlkRkFRSXRlbXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNGQVFPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPlNlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0LjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRkFRT3ZlcnZpZXdTbWFsbFBhZ2VTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudEZBUVpvb20jIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LlRpY2tldENvbXBvc2UuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5GQVFab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLlRhYmxlLlNvcnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkxpbmtPYmplY3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVJpY2hUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFKQVggUmVzcG9uZGVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMDAtQmFjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFab29tOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5bJSBFbnYoIkxhc3RTY3JlZW5PdmVydmlldyIpICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAxMC1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUVkaXQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTtTY3JlZW5UeXBlPVBvcHVwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMjAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5IG9mIHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRSGlzdG9yeTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMzAtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50IHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRUHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUVByaW50O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludF9GQVEiPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwNDAtTGluayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRMaW5rT2JqZWN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1GQVE7U291cmNlS2V5PVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDUwLURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlIHRoaXMgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFEZWxldGU7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Db25maXJtYXRpb25EaWFsb2c8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgWm9vbS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyRkFRWm9vbSMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuRkFRWm9vbS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRkFRWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5DdXN0b21lci5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgc2VhcmNoLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyRkFRU2VhcmNoIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQ3VzdG9tZXJGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5TdWJtZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5mPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjc4MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkZBUUlEIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ2F0ZWdvcnkiIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ikxhbmd1YWdlIiBUcmFuc2xhdGFibGU9IjEiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBQcmludC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgUHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgRkFRIHNlYXJjaC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpQdWJsaWNGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNQdWJsaWNGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRkFRSUQiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDYXRlZ29yeSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTGFuZ3VhZ2UiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBab29tLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljRkFRWm9vbSMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuRkFRWm9vbS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRkFRWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5DdXN0b21lci5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlB1YmxpYyBGQVEgWm9vbS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlB1YmxpYyBGQVEgUHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUpvdXJuYWwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudEZBUUpvdXJuYWwjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFKb3VybmFsIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBKb3VybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Sm91cm5hbDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFKb3VybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPmo8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+OTMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFKb3VybmFsIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUpvdXJuYWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhdGVnb3J5Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUpvdXJuYWwjIyNKb3VybmFsTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRSm91cm5hbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFKb3VybmFsIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUpvdXJuYWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbFBhZ2VTaG93biIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+U2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckZBUUpvdXJuYWxPdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Sm91cm5hbE92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpGQVFKb3VybmFsT3ZlcnZpZXc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRSm91cm5hbE92ZXJ2aWV3OjpTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0IiBUcmFuc2xhdGFibGU9IjEiPlM8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgSGlzdG9yeS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgRGVsZXRlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbnNlcnRNZXRob2QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkZ1bGwiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJGdWxsIiBUcmFuc2xhdGFibGU9IjEiPkZ1bGwgRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUZXh0IiBUcmFuc2xhdGFibGU9IjEiPlRleHQgT25seTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNJbmNsdWRlSW50ZXJuYWwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0ZpZWxkTmFtZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6VGlja2V0Q29tcG9zZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI1Nob3dJbnNlcnRUZXh0QnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OlRpY2tldENvbXBvc2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93SW5zZXJ0TGlua0J1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6VGlja2V0Q29tcG9zZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI1Nob3dJbnNlcnRUZXh0QW5kTGlua0J1dHRvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93ICJJbnNlcnQgRkFRIFRleHQgJmFtcDsgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICZhbXA7IExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6VGlja2V0Q29tcG9zZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI1VwZGF0ZUFydGljbGVTdWJqZWN0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpNdWx0aUxhbmd1YWdlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RGVmYXVsdDo6TGFuZ3VhZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPmVuPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25DU1MjIyMyMDAtRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgQ1NTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25KUyMjIzIwMC1GQVEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBKUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLmpzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjMDAzLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5SZWxhdGVkQXJ0aWNsZXMuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuUmVsYXRlZEFydGljbGVzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpWb3RpbmciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6Q2FjaGVUVEwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xNzI4MDA8L0l0ZW0+IDwhLS0gZGVmYXVsdCAxNzIsODAwICg2MCAqIDYwICogMjQgKiAyKSAtLT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFzaGJvYXJkQmFja2VuZCMjIzAzOTgtRkFRLUxhc3RDaGFuZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpEYXNoYm9hcmQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TGFzdENoYW5nZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwMzk5LUZBUS1MYXN0Q3JlYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RGFzaGJvYXJkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5MYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPkxhc3RDcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0ZBUTo6TGFuZ3VhZ2VMaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkxhbmd1YWdlTGlzdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QdWJsaWNDYXRlZ29yeUxpc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpQdWJsaWNGQVFHZXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHVibGljRkFRR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0ZBUTo6UHVibGljRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw0fSQiPjEwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDV9JCI+MjUwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDR9JCI+MTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckhUTUxGaWVsZEhlaWdodE1heCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw1fSQiPjI1MDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRQWRkIyMjUmljaFRleHRXaWR0aCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRQWRkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjYyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFBZGQjIyNSaWNoVGV4dEhlaWdodCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUFkZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj4zMjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRWRpdCMjI1JpY2hUZXh0V2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyU/JCI+NjIwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUVkaXQjIyNSaWNoVGV4dEhlaWdodCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyU/JCI+MzIwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6VG9vbEJhck1vZHVsZSMjIzkwLUZBUTo6QWdlbnRGQVFBZGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpUb29sQmFyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRvb2xCYXI6Okxpbms8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+QWRkIEZBUSBhcnRpY2xlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFBZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFBZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDc3NDbGFzcyI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJY29uIj5mYSBmYS1xdWVzdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjEwMjAwOTA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZSMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGQgb2JqZWN0IHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheU5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3U21hbGwjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OkZBUU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRQWRkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRWRpdCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFab29tIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFab29tIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRWm9vbSMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFQcmludCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFQcmludDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFQcmludCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFQcmludDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFQcmludDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHNob3duIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUU92ZXJ2aWV3IyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFPdmVydmlldyMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OkZBUU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI1NlYXJjaENTVkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIEZpZWxkcyB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0Z1bGx0ZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjVGl0bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNLZXl3b3JkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjTGFuZ3VhZ2VJRHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNDYXRlZ29yeUlEcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI1ZhbGlkSURzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjU3RhdGVJRHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNWb3RlU2VhcmNoVHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI1JhdGVTZWFyY2hUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjQXBwcm92ZWRTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNDcmVhdGVkVXNlcklEcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0xhc3RDaGFuZ2VkVXNlcklEcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0l0ZW1DcmVhdGVUaW1lUG9pbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNJdGVtQ3JlYXRlVGltZVNsb3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNJdGVtQ2hhbmdlVGltZVBvaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjSXRlbUNoYW5nZVRpbWVTbG90IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1RpdGxlU2l6ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1RpdGxlU2l6ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpDb21wbGV4VGFibGU6OlNldHRpbmdzVmlzaWJpbGl0eSMjI0ZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRGQVFab29tPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUS5wbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRTnVtYmVyIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeU5hbWUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFwcHJvdmVkIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udGVudFR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRkFRTnVtYmVyIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjExMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+MTIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWQiPjEzMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeU5hbWUiPjE0MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYW5ndWFnZSI+MTUwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFwcHJvdmVkIj4xNjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udGVudFR5cGUiPjE3MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkIj4xODA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6Q3VzdG9tZXI6OlJlbGF0ZWRBcnRpY2xlczo6RW5hYmxlZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OlJlbGF0ZWRBcnRpY2xlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6U2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgc2VydmljZSBhc3NpZ25tZW50IGZvciBGQVFzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpSZWxhdGVkQXJ0aWNsZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkN1c3RvbWVyOjpSZWxhdGVkQXJ0aWNsZXNPblNlcnZpY2VPbmx5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgcmVsYXRlZCBhcnRpY2xlcyBvbiBzZXJ2aWNlIGNoYW5nZSBldmVuIHdpdGggZW1wdHkgc3ViamVjdCBhbmQgYm9keS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6UmVsYXRlZEFydGljbGVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QjIyNPdXRwdXRGaWx0ZXJQb3N0RkFRQ3VzdG9tZXJSZWxhdGVkQXJ0aWNsZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyRWxlbWVudFBvc3Q6OkZBUUN1c3RvbWVyUmVsYXRlZEFydGljbGVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZW1wbGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVGlja2V0TWVzc2FnZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpLZXl3b3JkQXJ0aWNlTGlzdDo6U2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6UmVsYXRlZEFydGljbGVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj41MDAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyMjI1F1ZXVlc0VuYWJsZWQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUVJlbGF0ZWRBcnRpY2xlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlJhdzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMjIyNEZWZhdWx0TGFuZ3VhZ2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVFSZWxhdGVkQXJ0aWNsZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5lbjwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMjIyNTaG93TGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUVJlbGF0ZWRBcnRpY2xlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzIyMjVm90ZVN0YXJzVmlzaWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgJzAnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUVJlbGF0ZWRBcnRpY2xlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+NDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4K
CnJlcXVpcmUgNTsKcGFja2FnZSBYTUw6OlJTUzo6U2ltcGxlR2VuOwp1c2Ugc3RyaWN0Owp1c2UgQ2FycCAoKTsKcmVxdWlyZSBFeHBvcnRlcjsKdXNlIHZhcnMgcXcoCiAgQEVYUE9SVCAlRVhQT1JUX1RBR1MgQElTQSAkVkVSU0lPTgogICVFbnRpdGllcyAlV2luTGFtZUVudGl0aWVzICVDb21tb25FbnRzICRNSU1FX1R5cGUgCiAgJERURF91cmwgJERURF9wdWJpZCAkTmF0aXZpemVfbmV3bGluZXMgJERXSU0gQEhpZGllcyAkUlNTX29iagogICRTbGVlcHkgJUlzQmxvY2tNYXJrdXAgJE1heWJlSW5kZW50ICRNYXliZU5MICVQZXJpb2RBc1NlY29uZHMKICAkTkFNRVNQQUNFX1NZICRDSFVOS19NSU5VVEVTICVCYWRQb3J0cwogIEBSZXRyeV9kZWxheXMgJFVzZXJBZ2VudFN0cmluZwopOwoKJFZFUlNJT04gPSAnMTEuMTEnOwpCRUdJTiB7ICpERUJVRyA9IHN1YiAoKSB7MH0gdW5sZXNzIGRlZmluZWQgJkRFQlVHOyB9ICAgIyBzZXQgREVCVUcgbGV2ZWwKCkBJU0EgPSBxdyhFeHBvcnRlcik7CgojJERURF91cmwgICB8fD0gJ2h0dHA6Ly9teS5uZXRzY2FwZS5jb20vcHVibGlzaC9mb3JtYXRzL3Jzcy0wLjkxLmR0ZCc7CiMkRFREX3B1YmlkIHx8PSAnLS8vTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMvL0RURCBSU1MgMC45MS8vRU4nOwokTkFNRVNQQUNFX1NZIHx8PSAnaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9zeW5kaWNhdGlvbi8nOwokQ0hVTktfTUlOVVRFUyA9IDEwOwoKJE5hdGl2aXplX25ld2xpbmVzID0gMSB1bmxlc3MgZGVmaW5lZCAkTmF0aXZpemVfbmV3bGluZXM7CiREV0lNID0gMSB1bmxlc3MgZGVmaW5lZCAkRFdJTTsKJFNsZWVweSA9CiAkRU5WeydNQUlMVE8nfSA/IDQgICMgdW5kZXIgY3JvbnRhYgogOiAoJEVOVnsnVEVSTSd9IHx8ICRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gfHwgJEVOVnsnQ09NU1BFQyd9ICkgPyAwCiAgICAjIGFsbW9zdCBkZWZpbml0ZWx5IG5vdCB1bmRlciBjcm9udGFiCiA6IDQgICB1bmxlc3MgZGVmaW5lZCAkU2xlZXB5OwpAUmV0cnlfZGVsYXlzID0gKDQsIDEwLCAyMCwgNDApOwokTWF5YmVJbmRlbnQgPSAnICAnOwokTWF5YmVOTCA9ICJcbiI7CiMkTWF5YmVOTCA9ICRNYXliZUluZGVudCA9ICcnOyAgIyB0ZXJzZXIsIG1vcmUgZ3JlcC13b3J0aHkKCmZvcmVhY2ggbXkgJHAgKCAgIyBwb3J0cyB3ZSdsbCByZWZ1c2UgdG8gZG8gSFRUUCBvbgpxdzwwIDEgNyA5IDExIDEzIDE1IDE3IDE5IDIwIDIxIDIyIDIzIDI1IDM3IDQyIDQzIDUzIDcwIDc5IDk1IDEwMSAxMDIgMTAzCiAgMTA0IDEwNyAxMDkgMTEwIDExMSAxMTMgMTE1IDExNyAxMTkgMTIzIDEzNSAxMzcgMTM4IDEzOSAxNDMgMzg5IDQ0MyA1MTIKICA1MTMgNTE0IDUxNSA1MTcgNTE4IDUyNiA1MzAgNTMxIDUzMiA1NDAgNTU2IDY2NjcKPikgeyAkQmFkUG9ydHN7JHB9ID0gMSB1bmxlc3MgZGVmaW5lZCAkQmFkUG9ydHN7JHB9OyB9CgokVXNlckFnZW50U3RyaW5nIHx8PSAiWG1sUnNzU2ltcGxlR2VuLyRWRVJTSU9OIjsKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpzdWIgX2hpZGUge3B1c2ggQEhpZGllcywgQF8gfTsKX2hpZGUgcXcoaW5pdCBpbXBvcnQpOwoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgoKPWhlYWQxIE5BTUUKClhNTDo6UlNTOjpTaW1wbGVHZW4gLSBmb3Igd3JpdGluZyBSU1MgZmlsZXMKCj1oZWFkMSBTWU5PUFNJUwoKICAjIEEgY29tcGxldGUgc2NyZWVuLXNjcmFwZXIgYW5kIFJTUyBnZW5lcmF0b3IgaGVyZToKICAKICB1c2Ugc3RyaWN0OwogIHVzZSBYTUw6OlJTUzo6U2ltcGxlR2VuOwogIG15ICR1cmwgPSBxPGh0dHA6Ly93d3cuZXhpbGUucnUvPjsKICAKICByc3NfbmV3KCAkdXJsLCAiZVhpbGUiLCAiTW9zY293LWJhc2VkIEFsdGVybmF0aXZlIE5ld3NwYXBlciIgKTsKICByc3NfbGFuZ3VhZ2UoICdlbicgKTsKICByc3Nfd2VibWFzdGVyKCAneHh4eHhAeW91cmRvbWFpbi5jb20nICk7CiAgcnNzX3R3aWNlX2RhaWx5KCk7CiAgCiAgZ2V0X3VybCggJHVybCApOwogIAogIHdoaWxlKAogICBtezxoND5ccyo8YSBocmVmPScvKC4qPyknLio/PiguKj8pPC9hPlxzKjwvaDQ+XHMqPHAuKj8+KC4qPyk8YSBocmVmPScvfXNnCiAgKSB7CiAgICByc3NfaXRlbSgiJHVybCQxIiwgJDIsICQzKTsKICB9CiAgCiAgZGllICJObyBpdGVtcyBpbiB0aGlzIGNvbnRlbnQ/ISB7e1xuJF9cbn19XG5BYm9ydGluZyIKICAgdW5sZXNzIHJzc19pdGVtX2NvdW50KCk7CiAgCiAgcnNzX3NhdmUoICdleGlsZS5yc3MnLCA0NSApOwogIGV4aXQ7Cgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgbW9kdWxlIGlzIGZvciB3cml0aW5nIFJTUyBmaWxlcywgc2ltcGx5LiBJdCB0cmFuc3BhcmVudGx5IGhhbmRsZXMKYWxsIHRoZSB1bnBsZWFzYW50IGRldGFpbHMgb2YgUlNTLCBsaWtlIHByb3BlciBYTUwgZXNjYXBpbmcsIGFuZCBhbHNvIGhhcwphIGdvb2QgbnVtYmVyIG9mIERvLVdoYXQtSS1NZWFuIGZlYXR1cmVzLCBsaWtlIG5vdCBjaGFuZ2luZyB0aGUgbW9kdGltZQpvbiBhIHdyaXR0ZW4tb3V0IFJTUyBmaWxlIGlmIHRoZSBmaWxlIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQsIGFuZCBsaWtlCmF1dG9tYXRpY2FsbHkgcmVtb3ZpbmcgYW55IEhUTUwgdGFncyBmcm9tIGNvbnRlbnQgeW91IG1pZ2h0IHBhc3MgaW4uCgpUaGlzIG1vZHVsZSBpc24ndCBtZWFudCB0byBoYXZlIHRoZSBmdWxsIGV4cHJlc3NpdmUgcG93ZXIgb2YgUlNTOwppbnN0ZWFkLCBpdCBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9zdCBjb21tb25seSBuZWVkZWQgYnkKUlNTLXdyaXRpbmcgcHJvZ3JhbXMuCgo9aGVhZDEgSU5URVJGQUNFCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3Igc3RhcnRpbmcgYW4gUlNTIGZlZWQgaW4KbWVtb3J5LCBwdXR0aW5nIGl0ZW1zIGludG8gaXQsIGFuZCBzYXZpbmcgaXQgdG8gZGlzayAob3IgcHJpbnRpbmcgaXQgYXMKYSBzdHJpbmcsIGFzIGluIGEgQ0dJKS4gSWYgeW91IHByZWZlciBhbiBvYmplY3Qtb3JpZW50ZWQgaW50ZXJmYWNlCihvYnZpb3VzbHkgbW9yZSB1c2VmdWwgaWYgeW91J3JlIGNvbXBvc2luZyBzZXZlcmFsIGZlZWRzIGF0IG9uY2UpLCB0aGVuCnlvdSBjYW4gdXNlIHRoaXMgbW9kdWxlIGFzIGEgY2xhc3Mgd2hvc2UgbWV0aG9kcyBhcmUgdGhlIHNhbWUgYXMgdGhlCmZ1bmN0aW9uIG5hbWVzIG1pbnVzICJyc3NfIi4gRXhjZXB0IGZvciB0aGlzIGRldGFpbCBvZiB0aGUgbmFtaW5nLCB0aGUKZnVuY3Rpb25zIGFuZCBtZXRob2RzIGFyZSB0aGUgc2FtZSwgYmVoYXZlIHRoZSBzYW1lLCBhbmQgdGFrZSB0aGUgc2FtZQphcmd1bWVudHMuCgpUaGF0IGlzLCB0aGlzIGZ1bmN0aW9uYWwgY29kZToKCiAgdXNlIFhNTDo6UlNTOjpTaW1wbGVHZW47CiAgbXkgJHVybCA9IHE8aHR0cDovL3d3dy5leGlsZS5ydS8+OwogIAogIHJzc19uZXcoICR1cmwsICJlWGlsZSIgKTsKICByc3NfbGFuZ3VhZ2UoICdlbicgKTsKICBnZXRfdXJsKCAkdXJsICk7CiAgLi4uCgpkb2VzIHRoZSBzYW1lIHdvcmsgYXMgdGhpcyBPTyBjb2RlOgoKICB1c2UgWE1MOjpSU1M6OlNpbXBsZUdlbiAoKTsKICBteSAkdXJsID0gcTxodHRwOi8vd3d3LmV4aWxlLnJ1Lz47CiAgbXkgJHJzcyA9IFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyggJHVybCwgImVYaWxlIik7CiAgJHJzcy0+bGFuZ3VhZ2UoICdlbicgKTsKICAkcnNzLT5nZXRfdXJsKCAkdXJsICk7CiAgLi4uCgooTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBDPGdldF91cmw+IGRvZXNuJ3QgaGF2ZSBhIGxlYWRpbmcgInJzc18iLApzbyBpdHMgbWV0aG9kIG5hbWUgaXMgdGhlIHNhbWUgYXMgaXRzIGZ1bmN0aW9uIG5hbWUuICBJdCdzIHRoZQpvbmUgZXhjZXB0aW9uLikKCklmIHRoaXMgdGFsayBvZiBvYmplY3RzIHB1enpsZXMgeW91LCBzZWUgCkw8SFRNTDo6VHJlZTo6QWJvdXRPYmplY3RzPiBpbiB0aGUgQzxIVE1MLVRyZWU+IGRpc3QsIGFuZC9vciBzZWUKdGhlIGNoYXB0ZXIgIlVzZXIncyBWaWV3IG9mIE9iamVjdC1PcmllbnRlZCBNb2R1bGVzIgppbiBteSBib29rIEk8UGVybCAmIExXUD4gKEw8aHR0cDovL3d3dy5hbWF6b24uY29tL2V4ZWMvb2JpZG9zL0FTSU4vMDU5NjAwMTc4OT4pLgooVGhlIGJvb2sgaXMgYWxzbyB1c2VmdWwgYXMgYW4gZXh0ZW5kZWQgZGlzY3Vzc2lvbiBvZiBzY3JlZW4tc2NyYXBpbmcuKQoKTm90ZTogaW4gdGhlIGNvZGUgYmVsb3csIEkgdXNlIHRoZSB3b3JkICJhY2Nlc3NvciIgYSBsb3QsIHRvIHJlZmVyCnRvIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgeW91IGNhbiBjYWxsIHR3byBwb3NzaWJsZSB3YXlzOgoxKSBsaWtlIEM8Zm9vKEk8dmFsPik+IHRvIHNldCB0aGUgImZvbyIgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBJPHZhbD4sCm9yIDIpIGxpa2UgQzxmb28oKT4gdG8gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgImZvbyIgYXR0cmlidXRlLgoKCj1oZWFkMSBGVU5DVElPTlMKCj1vdmVyCgo9aXRlbSBDPHJzc19uZXcoIEk8dXJsPiApOz4KCj1pdGVtIEM8cnNzX25ldyggSTx1cmwsIHRpdGxlPiApOz4KCj1pdGVtIEM8cnNzX25ldyggSTx1cmwsIHRpdGxlLCBkZXNjcmlwdGlvbj4gKTs+Cgo9aXRlbSBJPG9yOj4gQzw8ICRyc3MgPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoLi4uKTsgPj4KClRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBSU1MgZmVlZCBpbiBtZW1vcnkuICBUaGlzIHNob3VsZCBiZSB0aGUgZmlyc3QKQzxyc3NfSTx3aGF0ZXZlcj4+IGZ1bmN0aW9uIHlvdSBjYWxsIGluIHlvdXIgcHJvZ3JhbS4gIElmIHlvdSBjYWxsIGl0CmFnYWluLCBpdCBlcmFzZXMgdGhlIGN1cnJlbnQgb2JqZWN0IChpZiBhbnkpIGFuZCBzZXRzIHVwIGEgbmV3IG9uZSBhY2NvcmRpbmcKdG8gd2hhdGV2ZXIgcGFyYW1ldGVycyB5b3UgcGFzcy4KClRoZSBwYXJhbWV0ZXJzIGFyZSB0aGUgZnVsbCBVUkwsIHRoZSB0aXRsZSwgYW5kIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUKc2l0ZSAob3IgcGFnZSkgdGhhdCB5b3UncmUgcHJvdmlkaW5nIGFuIFJTUyBmZWVkIG9mLiBUaGUgZGVzY3JpcHRpb24gaXMKb3B0aW9uYWwsIGJ1dCB5b3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYSBVUkwgYW5kIHRpdGxlLgoKRXhhbXBsZXM6CgogIHJzc19uZXcoICR1cmwsICJlWGlsZSIsICJNb3Njb3ctYmFzZWQgQWx0ZXJuYXRpdmUgTmV3c3BhcGVyIiApOwoKICByc3NfbmV3KCAnaHR0cDovL3d3dy5teWJhem91a2kuY29tL25ld3MvJywgIkJhem91a2kgTmV3cyEiICk7CgooQXMgYSBtZXRob2QsIFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyBzaW1wbHkgcmV0dXJucyBhIG5ldwpSU1Mgb2JqZWN0LikKCj1jdXQKCnN1YiBuZXcgewogIG15ICRjbGFzcyA9IHNoaWZ0OwogICRjbGFzcyA9IHJlZigkY2xhc3MpIHx8ICRjbGFzczsKICBteSAkbmV3ID0gYmxlc3MgeyAnaXRlbXMnID0+IFtdIH0sICRjbGFzczsKICAkbmV3LT5pbml0KCk7CgogIEBfIGFuZCAkbmV3LT51cmwoc2hpZnQpOwogIEBfIGFuZCAkbmV3LT50aXRsZShzaGlmdCk7CiAgQF8gYW5kICRuZXctPmRlc2NyaXB0aW9uKHNoaWZ0KTsKCiAgJG5ldy0+aXRlbV9saW1pdCggMCApOwogICRuZXctPnJldGVudGlvbiggMzIgKiAyNCAqIDYwICogNjAgKTsgIyAzMiBkYXlzCgojICAoLWUgInJzcy5jc3MiKSA/ICRuZXctPmNzcygiLi9yc3MuY3NzIikKIyAgICA6ICRuZXctPmNzcygiaHR0cDovL3d3dy5pbnRlcmdsYWNpYWwuY29tL3Jzcy9yc3MuY3NzIik7CgojICAoLWUgImFib3V0X3Jzcy5odG1sIikgPyAkbmV3LT5kb2NzKCIuL2Fib3V0X3Jzcy5odG1sIikKIyAgICA6ICRuZXctPmRvY3MoImh0dHA6Ly93d3cuaW50ZXJnbGFjaWFsLmNvbS9yc3MvYWJvdXQuaHRtbCIpOwoKICByZXR1cm4gJG5ldzsKfQoKc3ViIGluaXQgeyByZXR1cm47IH0gICAjIG92ZXJyaWRlIGluIHN1YmNsYXNzIGFzIG5lY2Vzc2FyeQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCl9fUEFDS0FHRV9fLT5fYWNjZXNzb3JpemUoCiBxdygKICB0aXRsZSBkZXNjcmlwdGlvbiB1cmwgbGFuZ3VhZ2UgY3NzIHhzbCB3ZWJNYXN0ZXIgZG9jcwogIGl0ZW1fbGltaXQgdHRsCiByZXRlbnRpb24KICBhbGxvd19kdXBsaWNhdGVzCiAgaW1hZ2VfdGl0bGUgaW1hZ2VfbGluayBpbWFnZV91cmwgaW1hZ2Vfd2lkdGggaW1hZ2VfaGVpZ2h0IGltYWdlX2Rlc2NyaXB0aW9uIAogKQopOwoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2xhbmd1YWdlKEk8bGFuZ3VhZ2VfdGFnPik+CgpUaGlzIGRlY2xhcmVzIHdoYXQgbGFuZ3VhZ2UgdGhpcyBSU1MgZmVlZCBpcyBpbi4gIEl0IG11c3QgYmUKYW4gUkZDMzA2Ni1zdHlsZSBsYW5ndWFnZSB0YWdzIGxpa2UgImVuIiwgb3IgImVuLVVTIiwgb3IgInpoLVRXIi4KKFNlZSBJPEkxOE46OkxhbmdUYWdzOjpMaXN0PiBmb3IgYSBsaXN0LikKSWYgeW91IGRvbid0IHNldCB0aGUgZmVlZCdzIGxhbmd1YWdlLCBpdCBkZWZhdWx0cyB0byAiZW4iLCBmb3IgZ2VuZXJpYyBFbmdsaXNoLgoKSWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRob3V0IGEgcGFyYW1ldGVyLCBpdCByZXR1cm5zCnRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSU1MgZmVlZCdzIGxhbmd1YWdlLiAgRm9yIGV4YW1wbGU6CgogIHByaW50ICJJJ20gbWFraW5nIGFuIFJTUyBmZWVkIGZvciAiLCByc3NfbGFuZ3VhZ2UoKSwgIiFcbiI7CgpUaGUgc2FtZSBpcyB0cnVlIGZvciBhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IEkgbGFiZWwgYXMgImFjY2Vzc29ycyIuCgoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2l0ZW1fbGltaXQoSTxudW1iZXI+KT4KClRoaXMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCB0aGlzIGZlZWQgd2lsbCBzaG93LgoKVGhlIGRlZmF1bHQgdmFsdWUgaXMgMCwgbWVhbmluZyB0aGF0IHRoZXJlIGlzIG5vIG1heGltdW0uCgpJZiB5b3Ugc2V0IGl0IHRvIGEgcG9zaXRpdmUgbnVtYmVyIEk8Tj4sIHRoZW4gdGhlIGZlZWQgd2lsbCBzaG93IG9ubHkKdGhlIGZpcnN0IEk8Tj4gaXRlbXMgdGhhdCB5b3UgZGVjbGFyZSB3aXRoIEM8cnNzX2l0ZW0+LiAoT3IsIGlmIHlvdSBzZXQKQzxyc3NfaGlzdG9yeV9maWxlPiwgdGhlbiB0aGUgbmV3ZXN0IEk8Tj4gaXRlbXMgdGhhdCB5b3UgZGVjbGFyZQp3aXRoIEM8cnNzX2l0ZW0+LikKCklmIHlvdSBzZXQgaXQgdG8gYSBuZWdhdGl2ZSBudW1iZXIgSTwtTj4sIHRoZW4gdGhlIGZlZWQgd2lsbCBzaG93IG9ubHkKdGhlIGxhc3QgSTxOPiBpdGVtcyB0aGF0IHlvdSBkZWNsYXJlIHdpdGggQzxyc3NfaXRlbT4uIChPciwgaWYgeW91IHNldApDPHJzc19oaXN0b3J5X2ZpbGU+LCB0aGVuIHRoZSBvbGRlc3QgSTxOPiBpdGVtcyB5b3UgZGVjbGFyZSB3aXRoIEM8cnNzX2l0ZW0+LAp3aGljaCBpcyB1bmxpa2VseSB0byBiZSB1c2VmdWwhKQoKCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc193ZWJNYXN0ZXIoSTxlbWFpbC1hZGRyZXNzPik+CgpUaGlzIGRlY2xhcmVzIHdoYXQgZW1haWwgYWRkcmVzcyB5b3UsIHRoZSBSU1MgZ2VuZXJhdG9yIG1hbmFnZXIsIGNhbiBiZQpyZWFjaGVkIGF0LiAgRXhhbXBsZToKCiAgcnNzX3dlYk1hc3RlciggJ3NidXJrZUBiYXpvdWtpLW5ld3MuaW50JyApOwoKPWN1dAoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19oaXN0b3J5X2ZpbGUoIEk8ZmlsZW5hbWU+ICk+CgpUaGlzIGRlY2xhcmVzIHRoYXQgeW91IHdhbnQgdGhpcyBSU1MgZmVlZCB0byBrZWVwIHRyYWNrIG9mIHdoYXQgaXRlbXMgYXJlCm5ldywgYW5kIHRvIGxpc3QgdGhlbSBmaXJzdCB3aGVuIHRoZSBSU1MgaXMgZW1pdHRlZC4gIFRvIGRvIHRoaXMsIHRoZSBSU1MKZ2VuZXJhdG9yIGhhcyB0byBzdG9yZSBpbmZvcm1hdGlvbiBpbiBhIGZpbGUsIHdoZXJlIGl0IHRyYWNrcyBpdHMgImhpc3RvcnkiLAppLmUuLCB3aGVuIHdhcyB0aGUgZmlyc3QgdGltZSBpdCBzYXcgZ2l2ZW4gVVJMcywgYW5kIHRoZSBtb3N0IHJlY2VudCB0aW1lCml0IHNhdyBnaXZlbiBVUkxzLgoKVHlwaWNhbCB1c2FnZSBpczoKCiAgcnNzX2hpc3RvcnlfZmlsZSggJ3RoaXNyc3NmZWVkLmRhdCcgKTsKCllvdSBzaG91bGQgY2FsbCBDPHJzc19oaXN0b3J5X2ZpbGU+IEk8YmVmb3JlPiB5b3UgbWFrZSBhbnkgY2FsbHMgdG8KQzxyc3NfaXRlbT4uCgpUaGUgaGlzdG9yeS1maWxlIGZlYXR1cmUgaXMgbWVhbnQgZm9yIGNhc2VzIHdoZXJlIHlvdXIgUlNTLWdlbmVyYXRvcgpwcm9ncmFtIGNhbGxzIEM8cnNzX2l0ZW0+IG9uIEk8ZXZlcnk+IGxpbmsgaXQgc2VlcywgYnV0IG9ubHkgd2FudHMgdGhlCkk8bmV3PiBsaW5rcyB0byBhcHBlYXIgaW4gdGhlIFJTUyBvdXRwdXQuIChUaGlzIGNhbiBiZSBhIGdvb2QgYXBwcm9hY2gKaWYgeW91J3JlIG1ha2luZyBhbiBSU1MgZmVlZCBvZiBhIHBhZ2UgbGlrZQpDPGh0dHA6Ly93d3cuZ3VhcmRpYW4uY28udWsvPiB3aGVyZSB0aGVyZSdzIHNvbWUgbmV3IGxpbmtzICh0byB0aGUKcmVjZW50bHkgYWRkZWQgc3RvcmllcyksIGJ1dCBhbHNvIGxpbmtzIHRvIHNvbWUgZGF5cy1vbGQgc3RvcmllcywgYW5kCkk8YWxzbz4gbGlua3MgdG8gc29tZSBhbHdheXMtdGhlcmUgdGhpbmdzIGxpa2UgIkFyY2hpdmUgU2VhcmNoIiBhbmQKIkNvbnRhY3QgVXMiIHBhZ2VzLgoKT25jZSB5b3UgY2FsbCByc3NfaGlzdG9yeV9maWxlLCB0aGUgc3BlY2lmaWVkIGZpbGUgaXMgcmVhZCBpbi4gIFRoZQppbi1tZW1vcnkgaGlzdG9yeSAoc3RvcmVkIGluIHRoZSBSU1Mgb2JqZWN0KSBpcyB1cGRhdGVkIGFzIHlvdQpjYWxsIEM8cnNzX2l0ZW0+LiAgQnV0IHRoZSBmaWxlIGlzbid0IHVwZGF0ZWQgdW50aWwgeW91IGNhbGwgcnNzX3NhdmUuCgooQSBkby13aGF0LUktbWVhbiBzaWRlIGVmZmVjdCBvZiBjYWxsaW5nIEM8cnNzX2hpc3RvcnlfZmlsZT4gaXMgdGhhdCBpdApzZXRzIHJzc19pdGVtX2xpbWl0IHRvIDI1IGlmIGl0IGlzIGN1cnJlbnRseSAwLikKCihJbmNpZGVudGFsbHksIGlmIHlvdSdyZSB1c2luZyByc3NfaGlzdG9yeV9maWxlIGFzIHBhcnQgb2YgYSBDR0kgdGhhdAplbWl0cyBSU1MgZGF0YSwgaW5zdGVhZCBvZiBhIHByb2dyYW0gdGhhdCBqdXN0IHNhdmVzIHRvIGFuIFJTUyBmaWxlLAp0aGVuIHRoaW5ncyB3aWxsIGdldCBjb21wbGljYXRlZC4gWW91J2xsIG5lZWQgdG8gY2FsbCBhbiBpbnRlcm5hbCBtZXRob2QKdG8gZXhwbGljaXRseSBjb21taXQgdGhlIGhpc3RvcnkgZmlsZSB0byBkaXNrLCBhbmQgeW91J2xsIG5lZWQgYQpzZW1hcGhvcmUgZmlsZSB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuIEVtYWlsIG1lIGZvciBmdWxsIGluZm8uKQoKPWN1dAoKc3ViIGhpc3RvcnlfZmlsZSB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICByZXR1cm4gJHNlbGYtPnsnaGlzdG9yeV9maWxlJ30gdW5sZXNzIEBfOyAgICMgcmVhZCBhY2Nlc3Npb24KICBteSAkZmlsZSA9ICRfWzBdOwogIAogIHVubGVzcyhkZWZpbmVkICRmaWxlICBhbmQgIGxlbmd0aCAkZmlsZSAgYW5kICAkZmlsZSA9fiBtL1xTLykgewogICAgREVCVUcgYW5kIHByaW50ICJLaWxsaW5nICRzZWxmICdzIG1lbW9yeS1oaXN0b3J5LlxuIjsKICAgICAjIEkgZG9uJ3Qga25vdyBpZiB0aGlzJ2QgYmUgYWN0dWFsbHkgdXNlZnVsIGZvciBhbnl0aGluZyB0aG8uCiAgICBkZWxldGUgJHNlbGYtPnsnaGlzdG9yeV9maWxlJ307CiAgICBkZWxldGUgJHNlbGYtPnsnX2ZpcnN0X3NlZW4nIH07CiAgICBkZWxldGUgJHNlbGYtPnsnX2xhc3Rfc2VlbicgIH07CiAgICByZXR1cm4gdW5kZWY7CiAgfQogIAogIERFQlVHIGFuZCBwcmludCAiQ29uc2lkZXJpbmcgJGZpbGUgYXMgJHNlbGYgJ3MgaGlzdG9yeS5cbiI7CiAgJHNlbGYtPnsnaGlzdG9yeV9maWxlJ30gPSAkZmlsZTsKICAkc2VsZi0+X3JlYWRfaGlzdG9yeV9maWxlOwogIAogICRzZWxmLT5pdGVtX2xpbWl0KCAyNSApIGlmICREV0lNIGFuZCAhJHNlbGYtPml0ZW1fbGltaXQoKTsKCiAgcmV0dXJuICRmaWxlOwp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCgo9aXRlbSBDPHJzc19pdGVtKCBJPHVybD4gKTs+Cgo9aXRlbSBDPHJzc19pdGVtKCBJPHVybCwgdGl0bGU+ICk7PgoKPWl0ZW0gQzxyc3NfaXRlbSggSTx1cmwsIHRpdGxlLCBkZXNjcmlwdGlvbj4gKTs+CgpUaGlzIGFkZHMgYSBuZXcgaXRlbSB0byB0aGUgY3VycmVudCBmZWVkLiBZb3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgdGhlClVSTCB0byBhZGQgKGFuZCBpdCBzaG91bGQgYmUgYSB2YWxpZC1sb29raW5nIFVSTCwgc3RhcnRpbmcgd2l0aAoiSTxzb21ldGhpbmc6PiIsIGFuZCBub3QgY29udGFpbmluZyBhbnkgc3BhY2VzKS4gWW91IG1heSBhbHNvIHNwZWNpZnkKdGhlIHRpdGxlLCBidXQgaXQncyBvcHRpb25hbC4gQW5kIGZpbmFsbHksIHlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEKZGVzY3JpcHRpb24uIChZb3UgY2FuIHJlbWVtYmVyIHRoaXMgYmVjYXVzZSBpdCBzdGFydHMgd2l0aCB0aGUgZXNzZW50aWFsCml0ZW0gZmlyc3QsIGFuZCBwcm9ncmVzc2VzIHRvd2FyZCB0aGUgbW9zdCBvcHRpb25hbC4pCgpMZWFkaW5nIGFuZCB0YWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZCBmcm9tIHdoaWNoZXZlciBvZiBJPHVybCwKdGl0bGUsPiBhbmQgSTxkZXNjcmlwdGlvbj4gYXJlIGRlZmluZWQgdmFsdWVzLCBhbmQgSFRNTCBpcyBwYXJzZWQgb3V0LgoKQSBzaW1wbGUgdXNhZ2U6CgogIHJzc19pdGVtKAogICAgImh0dHA6Ly93d3cuaGFycGVycy5vcmcvTW9zdFJlY2VudFdSLmh0bWwiLAogICAgIkhhcnBlcidzIE1hZ2F6aW5lJ3MgV2Vla2x5IFJldmlldyIKICApOwoKQWx0aG91Z2ggaW4gcHJhY3RpY2UsIGEgdHlwaWNhbCBjYWxsIHdvbid0IGhhdmUgc3RyaW5nIGNvbnN0YW50cywgYnV0CndpbGwgaW5zdGVhZCBiZSBsaWtlIHRoZSBleGFtcGxlIGluIHRoZSBMPFN5bm9wc2lzIHNlY3Rpb3N8LyJTWU5PUFNJUyI+LApuYW1lbHk6CgogIHJzc19pdGVtKCIkdXJsJDEiLCAkMiwgJDMpOwoKSW5jaWRlbnRhbGx5LCBhcyBhIGRvLXdoYXQtSS1tZWFuIGZlYXR1cmUsIGlmIHRoZSBmaXJzdCBwYXJhbWV0ZXIKZG9lc24ndCBsb29rIGxpa2UgYSBVUkwgYnV0IG9uZSBvZiB0aGUgb3RoZXJzIGRvZXMsIHRoZW4gdGhpcyBlcnJvciBpcwpzaWxlbnRseSBmb3JnaXZlbi4gIFRoaXMgaXMgc28geW91IGNhbiBvY2Nhc2lvbmFsbHkgc2xpcCB1cCBhbmQgZm9yZ2V0CnRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVycy4KCihJbiB0aGUgdW5saWtlbHkgZXZlbnQgd2hlcmUgeW91IEk8bmVlZD4gdG8gYXZvaWQgdGhlIEhUTUwtcmVtb3ZhbApmZWF0dXJlcywgeW91IGNhbiBkbyB0aGlzIGJ5IHBhc3Npbmcgc2NhbGFyLXJlZmVyZW5jZXMgaW5zdGVhZCBvZgpub3JtYWwgc3RyaW5ncywgbGlrZSBzbzogQzxyc3NfaXRlbSgkdXJsLCAkdGl0bGUsIFwkbm90X3RvX2JlX2VzY2FwZWQpPi4pCgo9Y3V0CgpzdWIgaXRlbSB7ICMgQWRkIGFuIGl0ZW06ICAodXJsLCB0aXRsZSwgZGVzY3JpcHRpb24pCiAgbXkoJHNlbGYsIEBwYXJhbXMpID0gQF87CiAgaWYoIGdyZXAgZGVmaW5lZCgkXykgJiYgbGVuZ3RoKCRfKSwgQHBhcmFtcyApIHsKICAgIHB1c2ggQHskc2VsZi0+eydpdGVtcyd9fSwKICAgICAgWwogICAgICAgICRzZWxmLT5fcHJvY2Vzc19pdGVtX3BhcmFtcyhAcGFyYW1zKSAgIyBEV0lNIHRoaW5ncyBoYXBwZW4gaGVyZQogICAgICBdCiAgICA7CiAgICBERUJVRyBhbmQgcHJpbnQgIkFkZGluZyBpdGVtICIsCiAgICAgam9pbigifCIsIEB7ICRzZWxmLT57J2l0ZW1zJ31bLTFdIH0pLCAiXG4iOwoKICAgICMgVXBkYXRlIGhpc3RvcnkuLi4KICAgIGlmKCAkc2VsZi0+eydfZmlyc3Rfc2Vlbid9ICkgewogICAgICBteSAkdXJsID0gJHNlbGYtPnsnaXRlbXMnfVstMV1bMF07CiAgICAgIG15ICRub3cgPQogICAgICAgICAgICAkc2VsZi0+eydfdmlyZ2luX2l0ZW1fdGltZXN0YW1wJ30KICAgICAgICA/IC0tJHNlbGYtPnsnX3Zpcmdpbl9pdGVtX3RpbWVzdGFtcCd9CiAgICAgICAgOiB0aW1lKCkKICAgICAgOwogICAgICAkc2VsZi0+eydfZmlyc3Rfc2Vlbid9eyR1cmx9IHx8PSAkbm93OwogICAgICAkc2VsZi0+eydfbGFzdF9zZWVuJyB9eyR1cmx9ICAgPSAkbm93OwogICAgfQoKICB9IGVsc2UgewogICAgREVCVUcgYW5kIHByaW50ICJOb3QgYWRkaW5nIGl0ZW0gLS0gZW1wdHkgcGFyYW1zXG4iOwogIH0KICByZXR1cm4gJHNlbGY7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfaXRlbV9jb3VudCgpPgoKVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgeW91J3ZlIGRlY2xhcmVkLiAgSSBhbnRpY2lwYXRlIHRoYXQgaXRzCm1haW4gdXNhZ2Ugd2lsbCBiZSBzb21ldGhpbmcgbGlrZToKCiAgZGllICJXaGF0LCBubyBvYmplY3RzIGZvdW5kIGF0ICR1cmwgPyEiCiAgIHVubGVzcyByc3NfaXRlbV9jb3VudCgpOwoKb3IsIG1heWJlLi4uCgogIGV4aXQgdW5sZXNzIHJzc19pdGVtX2NvdW50KCk7CgouLi5kZXBlbmRpbmcgb24gaG93L3doZXRoZXIgeW91J2Qgd2FudCB0byByZWFjdCB0byBjYXNlcyB3aGVyZSB5b3UgZG9uJ3QKc2VlIGFueXRoaW5nIHRvIHB1dCBpbnRvIGFuIFJTUyBmZWVkLgoKTm90ZSB0aGF0IHRoZSBwYXJlbnMgYXJlIG9wdGlvbmFsLCBzaW5jZSB0aGlzIGNvbW1hbmQgdGFrZXMgbm8gb3B0aW9ucwooanVzdCBsaWtlIFBlcmwncyBDPHRpbWUoKT4gZnVuY3Rpb24pLgoKPWN1dAoKc3ViIGl0ZW1fY291bnQgIHsgc2NhbGFyIEB7ICRfWzBdLT57J2l0ZW1zJ30gfTsgfQpzdWIgaXRlbXNfY291bnQgeyBzaGlmdC0+aXRlbV9jb3VudCB9ICMgaGFybWxlc3MgYWxpYXMKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX3NvcnRfaXRlbXNfbmV3ZXN0X2ZpcnN0IHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICRzZWVuID0gJHNlbGYtPnsnX2ZpcnN0X3NlZW4nfTsKCiAgJHNlZW4gb3IgQ2FycDo6Y29uZmVzcygKICAgIkNhbid0IHNvcnQgaXRlbXMgYnkgYWdlIHVubGVzcyB5b3UgZGVmaW5lIGEgaGlzdG9yeSBmaWxlISIpOwoKICBteSAkaXRlbXMgPSAkc2VsZi0+eydpdGVtcyd9IHx8IGRpZSAiTk8gSVRFTVMhPyI7CgogIGlmKCBERUJVRyApIHsKICAgIHByaW50ICJcblNvcnRpbmcgIiwgc2NhbGFyKEAkaXRlbXMpLCAiIGl0ZW1zLCBuZXdlc3QgZmlyc3QuICBBZ2UgZHVtcDpcbiI7CiAgICBmb3JlYWNoIG15ICRpIChAJGl0ZW1zKSB7CiAgICAgIGlmKCAkaS0+WzBdICkgewogICAgICAgIHByaW50ZiAiICAlcyA6ICVzICglcylcbiIsCiAgICAgICAgICRpLT5bMF0sICRzZWVuLT57JGktPlswXX0gfHwgMCwgc2NhbGFyIGxvY2FsdGltZSgKICAgICAgICAgICAgICAgICAgJHNlZW4tPnskaS0+WzBdfSB8fCAwKQogICAgICAgIDsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcmludCAiIE5PVVJMXG4iOwogICAgICB9CiAgICB9CiAgICBwcmludCAiIChubyBpdGVtcylcbiIgdW5sZXNzIEAkaXRlbXM7CiAgICBwcmludCAiKEVuZCBoaXN0b3J5IGR1bXAuKVxuXG4iOwogIH0KCiAgQCRpdGVtcyA9CiAgICBzb3J0IHsgKCRzZWVuLT57JGItPlswXSB8fCcnfSB8fDApCiAgICAgICA8PT4gKCRzZWVuLT57JGEtPlswXSB8fCcnfSB8fDApCiAgICAgICBvciAkYS0+WzBdIGNtcCAkYi0+WzBdICAjIFNvIGl0J3MgYXQgbGVhc3QgcHJlZGljdGFibGUKICAgIH0KICAgICAgQCRpdGVtczsKICByZXR1cm47Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfaW1hZ2UoIEk8dXJsLCBoLCB3PiApOz4KClRoaXMgZGVjbGFyZXMgdGhhdCB5b3Ugd2FudCB0byBkZWNsYXJlIGEgcGFydGljdWxhciBpbWFnZSBhcyB0aGUgbG9nbyBmb3IKdGhpcyBmZWVkLiAgTW9zdCBmZWVkcyBkb24ndCBoYXZlIHN1Y2ggYSB0aGluZywgYW5kIG1vc3QgcmVhZGVycyBqdXN0IGlnbm9yZQppdCBhbnl3YXksIGJ1dCBpZiB5b3Ugd2FudCB0byBkZWNsYXJlIGl0LCB0aGlzIGZ1bmN0aW9uIGlzIGhvdy4gIFRoZQp0aHJlZSBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgYWxsIHJlcXVpcmVkLCBhcmU6IHRoZSBpbWFnZSdzIFVSTCwgaXRzCmhlaWdodCBpbiBwaXhlbHMsIGFuZCBpdHMgd2lkdGggaW4gcGl4ZWxzLgpBY2NvcmRpbmcgdG8gdmFyaW91cyBzcGVjcywgdGhlIHdpZHRoIHNob3VsZC9tdXN0IGJlIGJldHdlZW4gMSBhbmQgMTQ0LAphbiB0aGUgaGVpZ2h0IHNob3VsZC9tdXN0IGJlIGJldHdlZW4gMSBhbmQgNDAwLgoKQSB0eXBpY2FsIHVzYWdlOgoKICByc3NfaW1hZ2UoImh0dHA6Ly9pbnRlcmdsYWNpYWwuY29tL3Jzcy93ZWVibC5naWYiLCAxMDYsIDE0MCk7CgpCZSBjYXJlZnVsIG5vdCB0byBtaXggdXAgdGhlIGhlaWdodCBhbmQgd2lkdGguCgo9Y3V0CgoKc3ViIGltYWdlIHsKICBteSgkc2VsZiwgJHVybCwgJGgsICR3KSA9IHNwbGljZShAXywwLDQpOwogIENhcnA6OmNyb2FrICJVc2FnZTogXCRyc3MtPmltYWdlKFwkdXJsLCBcJGgsIFwkdykiCiAgIHVubGVzcyAkdXJsIGFuZCAkaCBhbmQgJHcKICAgICBhbmQgJGggPX4gbS9eXGR7MSwzfSQvcwogICAgIGFuZCAkdyA9fiBtL15cZHsxLDN9JC9zCiAgOwogICRzZWxmLT5pbWFnZV91cmwoJHVybCk7CiAgJHNlbGYtPmltYWdlX2hlaWdodCgkaCk7CiAgJHNlbGYtPmltYWdlX3dpZHRoKCAkdyk7CgogICAgIyAgd2lkdGggbXVzdCAoc2hvdWxkPykgYmUgYmV0d2VlbiAxIGFuZCAxNDQKICAgICMgaGVpZ2h0IG11c3QgKHNob3VsZD8pIGJlIGJldHdlZW4gMSBhbmQgNDAwCgogIEBfIGFuZCAkc2VsZi0+aW1hZ2VfbGluayggICAgICAgIHNoaWZ0KTsKICBAXyBhbmQgJHNlbGYtPmltYWdlX3RpdGxlKCAgICAgICBzaGlmdCk7CiAgQF8gYW5kICRzZWxmLT5pbWFnZV9kZXNjcmlwdGlvbiggc2hpZnQpOwogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19zYXZlKCBJPGZpbGVuYW1lPiApOz4KCj1pdGVtIEM8cnNzX3NhdmUoIEk8ZmlsZW5hbWUsIG1heF9hZ2VfZGF5cz4gKTs+CgpUaGlzIHNhdmVzIHRoZSBSU1MgZGF0ZSB0byB0aGUgZmlsZSB5b3Ugc3BlY2lmeS4gIElmIHRoZSBSU1MgZGF0YSBoYXNuJ3QKY2hhbmdlZCwgdGhlIGZpbGUgKGFuZCBpdHMgbW9kdGltZSkgYXJlbid0IGFsdGVyZWQuICBUaGUgb3B0aW9uYWwgSTxtYXhfYWdlX2RheXM+CnBhcmFtZXRlciBtZWFucyB0aGF0IGlmIGV2ZXIgdGhlIGZpbGUgZXhpc3RzLCBhbmQgaXRzIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQKZm9yIHRoYXQgbWFueSBkYXlzIG9yIGxvbmdlciwgdGhlbiB0aGUgcHJvZ3JhbSBzaG91bGQgZGllIHdpdGggYSB3YXJuaW5nCm1lc3NhZ2UuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgYSBzY3JlZW4tc2NyYXBlciBmb3IgYSBzaXRlIHRoYXQgd2UKa25vdyBzaG91bGQgKGluIHRoZW9yeSkgY2hhbmdlIGl0cyBjb250ZW50IGF0IGxlYXN0IHdlZWtseSwgd2UgbWlnaHQgc2F2ZQp0aGUgUlNTIGZpbGUgd2l0aDoKCiAgcnNzX3NhdmUoIndoYXRldmVyLnJzcyIsIDE3KTsKICAgIyBTY3JlYW0gaWYgdGhlIGZlZWQgaXMgdW5jaGFuZ2VkIGZvciAxNyBkYXlzLgoKVGhlIHNldmVudGVlbiB0aGVyZSBpcyBnb3R0ZW4gYnkgYXNzdW1pbmcgdGhhdCBqdXN0IG1heWJlIHRoZSBzaXRlCm1pZ2h0IHNraXAgdHdvIHdlZWtzIGZvciBhIHZhY2F0aW9uIG5vdyBhbmQgdGhlbiwgYW5kIG1pZ2h0IGV2ZW4gcHV0Cm91dCB0aGUgcHJlLXZhY2F0aW9uIGlzc3VlIGEgZmV3IGRheXMgZWFybHkgLS0gYnV0IHRoYXQgaWYgZXZlciB0aGUgcHJvZ3JhbQpub3RpY2VzIHRoYXQgdGhlIGRhdGEgaGFzbid0IGNoYW5nZWQgZm9yIDE3IGRheXMsIHRoZW4gaXQgc2hvdWxkIGVtaXQKZXJyb3IgbWVzc2FnZXMuICBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSBvbiBhIG9uZS10aW1lIGJhc2lzLApqdXN0IGNoYW5nZSB0aGUgbW9kdGltZSAobGlrZSB2aWEgQzx0b3VjaD4pIG9uIHRoZSBGPHdoYXRldmVyLnJzcz4gZmlsZS4KCklmIHlvdSBkb24ndCBzcGVjaWZ5IGEgQzxtYXhfYWdlX2RheXM+IHZhbHVlLCB0aGVuIHRoaXMgd2hvbGUKY29tcGxhaW4taWYtaXQncy1vbGQgZmVhdHVyZSBpcyBkaXNhYmxlZC4KCj1jdXQKCnN1YiBzYXZlIHsKICBteSgkc2VsZiwgJGZpbGVuYW1lLCAkbWF4YWdlKSA9IEBfOwogIENhcnA6OmNyb2FrKCJJIG5lZWQgYSBmaWxlbmFtZSB0byBzYXZlIHRvIikKICAgdW5sZXNzIGRlZmluZWQgJGZpbGVuYW1lIGFuZCBsZW5ndGggJGZpbGVuYW1lOwoKICAkc2VsZi0+aGlzdG9yeV9maWxlIGFuZCAkc2VsZi0+X3NvcnRfaXRlbXNfbmV3ZXN0X2ZpcnN0OwogICRzZWxmLT5fd3JpdGVfaGlzdG9yeV9maWxlOwoKICBteSAkbmV3X2NvbnRlbnQgPSAkc2VsZi0+YXNfc3RyaW5nOwoKICBsb2NhbCAqUlNTOwogICMgU2VlIGlmIHdlIGNhbiBza2lwIHdyaXRpbmcgdG8gZGlzawogIGlmKC1lICRmaWxlbmFtZSBhbmQgLWYgXyBhbmQgLXIgXyBhbmQgLXMgXykgewogICAgREVCVUcgYW5kIHByaW50ICJDb21wYXJpbmcgdG8gJGZpbGVuYW1lLi4uXG4iOwogICAgb3BlbiBSU1MsICRmaWxlbmFtZQogICAgIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHJlYWQtb3BlbiAkZmlsZW5hbWU6ICQhIjsgIyBpbnNhbml0eQogICAgbG9jYWwgJC87CiAgICBteSAkY29udGVudCA9IDxSU1M+OwogICAgY2xvc2UoUlNTKTsKICAgIAogICAgaWYoICRjb250ZW50IGVxICRuZXdfY29udGVudCApIHsKICAgICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgdGhlIHNhbWUuXG4iOwogICAgICByZXR1cm4gJHNlbGYtPl9jaGVja19hZ2UoJGZpbGVuYW1lLCAkbWF4YWdlKTsKICAgIH0KICAgIAogICAgbXkgJG5ld19jb250ZW50X3dpdGhvdXRfYnVpbGRkYXRlID0gJG5ld19jb250ZW50OwogICAgZm9yZWFjaCBteSAkYyAoJG5ld19jb250ZW50X3dpdGhvdXRfYnVpbGRkYXRlLCAkY29udGVudCkgewogICAgICAkYyA9fiBzezxsYXN0W0JiXXVpbGRbRGRdYXRlPi4qPzwvbGFzdFtCYl11aWxkW0RkXWF0ZT59e307CiAgICAgICRjID1+IHN7PHB1YltEZF1hdGU+Lio/PC9wdWJbRGRdYXRlPn17fTsKICAgICAgJGMgPX4gdHJ7XG5ccn17fXM7ICAjIEFuZCBzbWFzaCBuZXdsaW5lcyB3aGlsZSB3ZSdyZSBhdCBpdC4uLgogICAgfQogICAgaWYoICRjb250ZW50IGVxICRuZXdfY29udGVudF93aXRob3V0X2J1aWxkZGF0ZSApIHsKICAgICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgdGhlIHNhbWUsIGJhc2ljYWxseS5cbiI7CiAgICAgIHJldHVybiAkc2VsZi0+X2NoZWNrX2FnZSgkZmlsZW5hbWUsICRtYXhhZ2UpOwogICAgfQogICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgc3RhbGUuICBPdmVyd3JpdGluZy5cbiI7CiAgfQogIERFQlVHIGFuZCBwcmludCAiV3JpdGluZyB0byAkZmlsZW5hbWUgLi4uXG4iOwogIAogICMgT0ssIHdlIGhhdmUgdG8gYWN0dWFsbHkgd3JpdGUgaXQuICBMZXQncyBkbyBpdCBmYXN0LgogIG9wZW4oUlNTLCAiPiRmaWxlbmFtZSIpCiAgIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHdyaXRlLW9wZW4gJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIHByaW50IFJTUyAkbmV3X2NvbnRlbnQKICAgb3IgQ2FycDo6Y29uZmVzcyAiQ2FuJ3QgcHJpbnQgdG8gJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIGNsb3NlKFJTUykKICAgb3IgQ2FycDo6Y29uZmVzcyAiQ2FuJ3QgY2xvc2UgJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIGV2YWwgeyBjaG1vZCAwNjQ0LCAkZmlsZW5hbWUgfTsKICBERUJVRyBhbmQgcHJpbnQgIkRvbmUgd3JpdGluZyB0byAkZmlsZW5hbWVcbiI7CiAgcmV0dXJuIDE7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfYXNfc3RyaW5nKCk7PgoKVGhpcyByZXR1cm5zIHRoZSBSU1MtWE1MIGRhdGEgYXMgYSBzdHJpbmcuICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAppbnRlcm5hbGx5IGJ5IHRoZSByc3Nfc2F2ZSBmdW5jdGlvbjsgYnV0IHlvdSBtaWdodCB3YW50IHRvIGNhbGwgaXQKZXhwbGljaXRseSwgYXMgaW4gYSBDR0ksIHdoZXJlIHlvdXIgQ0dJIHdvdWxkIHByb2JhYmx5IGVuZCBsaWtlIHRoaXM6CgogIHByaW50ICJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3htbFxuXG4iLCByc3NfYXNfc3RyaW5nKCk7CiAgZXhpdDsKCj1jdXQKCgpzdWIgYXNfc3RyaW5nIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIAogIG15ICRuYW1lc3BhY2VzID0gJHNlbGYtPl9uYW1lc3BhY2VzX2FzX3N0cmluZzsKICAKICByZXR1cm4gam9pbiAnJyA9PgogICAgcXF7PD94bWwgdmVyc2lvbj0iMS4wIj8+XG59LAogICAgKCREVERfcHViaWQgYW5kICREVERfdXJsKQogICAgID8gcXF7PCFET0NUWVBFIHJzcyBQVUJMSUMgIiREVERfcHViaWQiXG4gICIkRFREX3VybCI+XG59IDogKCksCgogICAgJHNlbGYtPmNzcyA/ICggIyBodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldC8KICAgICAgcXF7PD94bWwtc3R5bGVzaGVldCB0aXRsZT0iQ1NTX2Zvcm1hdHRpbmciIHR5cGU9InRleHQvY3NzIiBocmVmPSJ9LAogICAgICAkc2VsZi0+eG1sZXNjKCRzZWxmLT5jc3MpLAogICAgICBxcXsiPz5cbn0KICAgICkgOiAoKSwKICAgICRzZWxmLT54c2wgPyAoCiAgICAgIHFxezw/eG1sLXN0eWxlc2hlZXQgdGl0bGU9IlhTTF9mb3JtYXR0aW5nIiB0eXBlPSJ0ZXh0L3htbCIgaHJlZj0ifSwgIyBUT0RPOiBiZXR0ZXIgbWltZSB0eXBlPwogICAgICAkc2VsZi0+eG1sZXNjKCRzZWxmLT54c2wpLAogICAgICBxcXsiPz5cbn0KICAgICkgOiAoKSwKICAgIHFxezxyc3MgdmVyc2lvbj0iMi4wIiRuYW1lc3BhY2VzPjxjaGFubmVsPn0sCiAgICAkc2VsZi0+X21vZHZlcnNpb25fY29tbWVudCwKICAgICRzZWxmLT5fdmFyaW91c19jb21tZW50cywKICAgICRzZWxmLT5fbWV0YWRhdGFfYXNfeG1sLAogICAgJHNlbGYtPl9pdGVtc19hc194bWwsCiAgICAiXG48L2NoYW5uZWw+PC9yc3M+XG4iLAogIDsKfQoKc3ViIF9uYW1lc3BhY2VzX2FzX3N0cmluZyB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkbnMgPSAkc2VsZi0+eydfbmFtZXNwYWNlcyd9OwogIHJldHVybiAnJyB1bmxlc3MgJG5zIGFuZCBrZXlzICUkbnM7CiAgcmV0dXJuCiAgICBqb2luICcnLCAiXG4iLAogICAgbWFwIHFxeyAgeG1sbnM6JF89IiQkbnN7JF99IlxufSwKICAgIHNvcnQga2V5cyAlJG5zCiAgOwp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCnN1YiBfbWV0YWRhdGFfYXNfeG1sIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15KCR1cmwsICR0aXRsZSwgJGRlc2NyaXB0aW9uKSA9ICgKICAgIG1hcCBkZWZpbmVkKCRfKSA/ICRfIDogJycsCiAgICAkc2VsZi0+dXJsLCAkc2VsZi0+dGl0bGUsICRzZWxmLT5kZXNjcmlwdGlvbiwKICApOwogIAogIGlmKCREV0lNKSB7CiAgICAjIHRvbGVyYXRlIHN3aXRjaGluZyB0aGUgZGVzY3JpcHRpb24vdGl0bGUgYW5kIHRoZSBVUkwKICAgIGlmKCR1cmwgIX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICBERUJVRyBhbmQgcHJpbnQgIlVSTCBcIiR1cmxcIiBsb29rcyBmaXNoeS4uLlxuIjsKICAgICAgaWYoICR0aXRsZSA9fiBte15bYS16XStbYS16MC05XSo6XFMrJH1zKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ICJTd2FwcGluZyB3aXRoIHRpdGxlIFwiJHRpdGxlXCJcbiI7CiAgICAgICAgKCR1cmwsICR0aXRsZSkgPSAoJHRpdGxlLCAkdXJsKTsKICAgICAgICAkc2VsZi0+dXJsKCR1cmwpOwogICAgICAgICRzZWxmLT50aXRsZSgkdGl0bGUpOwogICAgICB9IGVsc2lmKCAkZGVzY3JpcHRpb24gPX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICAgIERFQlVHIGFuZCBwcmludCAiU3dhcHBpbmcgd2l0aCBkZXNjcmlwdGlvbiBcIiRkZXNjcmlwdGlvblwiXG4iOwogICAgICAgICgkdXJsLCAkZGVzY3JpcHRpb24pID0gKCRkZXNjcmlwdGlvbiwgJHVybCk7CiAgICAgICAgJHNlbGYtPnVybCgkdXJsKTsKICAgICAgICAkc2VsZi0+ZGVzY3JpcHRpb24oJGRlc2NyaXB0aW9uKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBDYXJwOjpjcm9hayggIkludmFsaWQgVVJMIFwiJHVybFwiIGluIG1ldGFkYXRhICIKICAgICAgICAgLiAoJHRpdGxlfHwkZGVzY3JpcHRpb258fCI/Pz8iKSAuICJcbkFib3J0aW5nIgogICAgICAgICk7CiAgICAgIH0KICAgIH0KICB9CgogIG15ICRsYW5nID0gJHNlbGYtPmxhbmd1YWdlOwogICRsYW5nIGFuZCAkbGFuZyA9fiB0cltfXVtcLV07ICMgdG9sZXJhdGUgdW5kZXJzY29yZXMKICAkbGFuZyA9ICdlbicgdW5sZXNzIGRlZmluZWQgJGxhbmcKICAgIyBGcm9tIEkxOE46OkxhbmdUYWdzLi4uCiAgIGFuZCAkbGFuZyAhfiBtL15baUl4SV0kL3MKICAgYW5kICRsYW5nID1+CiAgICBtL14oPzogICMgRmlyc3Qgc3VidGFnCiAgICAgICAgIFt4aUlYXSB8IFthLXpBLVpdezIsM30KICAgICAgKQogICAgICAoPzogICMgU3VidGFncyB0aGVyZWFmdGVyCiAgICAgICAgIC0gICAgICAgICAgICMgc2VwYXJhdG9yCiAgICAgICAgIFtBLVphLXowLTldezEsOH0gICMgc3VidGFnICAKICAgICAgKSoKICAgICQveHMKICA7CgogIHJldHVybiBqb2luICcnLCBzcHJpbnRmKCBxcXsKPGxpbms+JXM8L2xpbms+Cjx0aXRsZT4lczwvdGl0bGU+CjxkZXNjcmlwdGlvbj4lczwvZGVzY3JpcHRpb24+CjxsYW5ndWFnZT4lczwvbGFuZ3VhZ2U+CjxsYXN0QnVpbGREYXRlPiVzPC9sYXN0QnVpbGREYXRlPgp9LAogICAgICBtYXAoICRzZWxmLT5odG1sMnRleHQoJF8pLAogICAgICAgICR1cmwgICAgICAgICB8fCAnISEhIUR1bW15VVJMISEhIScsCiAgICAgICAgJHRpdGxlICAgICAgIHx8ICRkZXNjcmlwdGlvbiB8fCAkdXJsIHx8ICchISEhRHVtbXlUaXRsZSEhISEnLAogICAgICAgICRkZXNjcmlwdGlvbiB8fCAkdGl0bGUgfHwgJHVybCB8fCAnISEhIUR1bW15RGVzY3JpcHRpb24hISEhJywKICAgICAgKSwKICAgICAgJGxhbmcsCiAgICAgICRzZWxmLT5fZGF0ZV9yZmM4MjIoKSwKICAgICksCiAgICBncmVwICRfLAogICAgCiAgICAkc2VsZi0+eyJza2lwSG91cnMifSwKICAgICRzZWxmLT57InNraXBEYXlzIn0sCiAgICAkc2VsZi0+X3N5X3VwZGF0ZV9hc194bWwsCiAgICAoKCRzZWxmLT57InR0bCJ9IHx8ICcnKSA9fiBtL14oXGQrKSQvcykgJiYgIjx0dGw+JDE8L3R0bD5cbiIsCiAgICAkc2VsZi0+d2ViTWFzdGVyICYmCiAgICAgKCI8d2ViTWFzdGVyPiIgLiAkc2VsZi0+aHRtbDJ0ZXh0KCRzZWxmLT53ZWJNYXN0ZXIpIC4gIjwvd2ViTWFzdGVyPlxuIiksCiAgICAKICAgICRzZWxmLT5kb2NzICYmCiAgICAgKCI8ZG9jcz4iIC4gJHNlbGYtPmh0bWwydGV4dCgkc2VsZi0+ZG9jcykgLiAiPC9kb2NzPlxuIiksCgogICAgJHNlbGYtPl9pbWFnZV9hc194bWwsCiAgICAkc2VsZi0+eydtb3JlX21ldGFkYXRhJ30sICMgYSBoYWNrIGZvciBzbmVha2luZyBpbiBtb3JlIHRoaW5ncwogIDsKCiMgLi4ud2l0aCBzYW5pdHktY2hlY2tlcnMKCn0KIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX3Byb2Nlc3NfaXRlbV9wYXJhbXMgewogIG15ICRzZWxmID0gc2hpZnQ7CiAgbXkoJHVybCwgJHRpdGxlLCAkZGVzY3JpcHRpb24pID0KICAgIG1hcCB7OyAoZGVmaW5lZCgkXykgJiYgbS9cUy8pID8gJF8gOiAnJyB9ICMgY29udGVudGZ1bG5lc3MgZmlsdGVyCiAgICBtYXAgJHNlbGYtPmh0bWwydGV4dCgkXyksICAjIGhlcmUncyB3aGVyZSB3ZSBkZS1odG1saWZ5IHRoaW5ncwogICAgQF87CiAgOwogIAogIGZvcigkdXJsLCAkdGl0bGUsICRkZXNjcmlwdGlvbikgewogICAgaWYocmVmICRfICAgICAgICkgeyB9ICAjIE9rYXkKICAgIGVsc2lmKGRlZmluZWQgJF8pIHsgcy9eXHMrLy9zOyBzL1xzKyQvL3MgfQogICAgZWxzZSAgICAgICAgICAgICAgeyAkXyA9ICcnIH0KICB9CiAgCiAgIyBUb2xlcmF0ZSBzd2l0Y2hpbmcgdGhlIGRlc2NyaXB0aW9uL3RpdGxlIGFuZCB0aGUgVVJMCiAgaWYoJERXSU0gYW5kICR1cmwgIX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgREVCVUcgYW5kIHByaW50ICJVUkwgXCIkdXJsXCIgbG9va3MgZmlzaHkuLi5cbiI7CiAgICBpZiggJHRpdGxlID1+IG17XlthLXpdK1thLXowLTldKjpcUyskfXMpIHsKICAgICAgREVCVUcgYW5kIHByaW50ICJTd2FwcGluZyB3aXRoIHRpdGxlIFwiJHRpdGxlXCJcbiI7CiAgICAgICgkdXJsLCAkdGl0bGUpID0gKCR0aXRsZSwgJHVybCk7CiAgICB9IGVsc2lmKCAkZGVzY3JpcHRpb24gPX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICBERUJVRyBhbmQgcHJpbnQgIlN3YXBwaW5nIHdpdGggZGVzY3JpcHRpb24gXCIkZGVzY3JpcHRpb25cIlxuIjsKICAgICAgKCR1cmwsICRkZXNjcmlwdGlvbikgPSAoJHRpdGxlLCAkZGVzY3JpcHRpb24pOwogICAgfSBlbHNlIHsKICAgICAgQ2FycDo6Y29uZmVzcyggIkludmFsaWQgVVJMIFwiJHVybFwiIGluIGl0ZW0gIgogICAgICAgLiAoJHRpdGxlfHwkZGVzY3JpcHRpb258fCI/Pz8iKSAuICJcbkFib3J0aW5nIgogICAgICApOwogICAgfQogIH0KICByZXR1cm4gKCR1cmwsICR0aXRsZSwgJGRlc2NyaXB0aW9uKTsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX2l0ZW1zX2FzX3htbCB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSBAaXRlbXM7CiAgbXkgQHhtbF9vdXQgPSAoJE1heWJlTkwpOwoKICBpZiggJHNlbGYtPmFsbG93X2R1cGxpY2F0ZXMgKSB7CiAgICBAaXRlbXMgPSBAeyAkc2VsZi0+eydpdGVtcyd9IHx8IGRpZSAiTk8gSVRFTVMhPyE/IiB9OwogIH0gZWxzZSB7CiAgICBteSAlc2VlbjsKICAgIGZvcmVhY2ggbXkgJGkgKEB7ICRzZWxmLT57J2l0ZW1zJ30gfHwgZGllICJOTyBJVEVNUyE/IT8iIH0pIHsKICAgICAgaWYoICRzZWVueyAkaS0+WzBdIH0gKysgKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ICJSZW1vdmluZyBkdXBsaWNhdGUgaXRlbSBAJGlcbiI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHVzaCBAaXRlbXMsICRpOwogICAgICB9CiAgICB9CiAgfQoKICBteSAkaXRlbV9saW1pdCA9IGludCggJHNlbGYtPml0ZW1fbGltaXQgfHwgMCApOwogIGlmKCRpdGVtX2xpbWl0KSB7CiAgICBpZihAaXRlbXMgPiBhYnMoJGl0ZW1fbGltaXQpKSB7CiAgICAgIGlmKCRpdGVtX2xpbWl0ID4gMCkgeyAjIGxpa2UgNCB0byBtZWFuIGp1c3QgdGhlIGZpcnN0IDQKICAgICAgICBERUJVRyBhbmQgcHJpbnQgIiBLaWxsaW5nIGFsbCBidXQgdGhlIGZpcnN0ICRpdGVtX2xpbWl0IGl0ZW1zLlxuIjsKICAgICAgICBzcGxpY2UgQGl0ZW1zLCAkaXRlbV9saW1pdDsKICAgICAgfSBlbHNlIHsgIyBsaWtlIC00IHRvIG1lYW4ganVzdCB0aGUgbGFzdCA0CiAgICAgICAgREVCVUcgYW5kIHByaW50ICIgS2lsbGluZyBhbGwgYnV0IHRoZSBsYXN0ICIsIDAtJGl0ZW1fbGltaXQsICIgaXRlbXMuXG4iOwogICAgICAgIHNwbGljZSBAaXRlbXMsIDAsIEBpdGVtcyArICRpdGVtX2xpbWl0OwogICAgICAgICAjIFNvIGlmIGl0ZW1fbGltaXQgaXMgLTMgYW5kIEBpdGVtcyBoYXMgMTAgZWxlbWVudHMsCiAgICAgICAgICMgIHRoZW4gdGhhdCBudW1iZXIgd2lsbCBiZSA3LCBpLmUuLCB0byBjaG9wIHRoZSBmaXJzdCA3CiAgICAgICAgICMgIGVsZW1lbnRzLCBsZWF2aW5nIHRoZSBsYXN0IDMuCiAgICAgIH0KICAgIH0KICB9CiAgREVCVUcgYW5kIHByaW50IHNjYWxhcihAaXRlbXMpLCAiIGl0ZW1zIGF0IGhhbmQ6XG4iOwogIAogIGZvcmVhY2ggbXkgJGkgKEBpdGVtcykgewogICAgbXkoJHVybCwgJHRpdGxlLCAkZGVzY3JpcHRpb24pID0gQCRpOwogICAgREVCVUcgPiAxIGFuZCBwcmludCAiSTogKHUgJHVybCkgKHQgJHRpdGxlKSAoZCAkZGVzY3JpcHRpb24pXG4iOwogICAgbmV4dCB1bmxlc3MgJHVybCBvciAkdGl0bGUgb3IgJGRlc2NyaXB0aW9uOwogICAgcHVzaCBAeG1sX291dCwgCiAgICAgIjxpdGVtPiRNYXliZU5MIiwKICAgICAobWFwICIkTWF5YmVJbmRlbnQkXyRNYXliZU5MIiwKICAgICAgIGxlbmd0aCgkdGl0bGUpICAgICAgID8gIjx0aXRsZT4kdGl0bGU8L3RpdGxlPiIgOiAoKSwKICAgICAgIGxlbmd0aCgkdXJsKSAgICAgICAgID8gIjxsaW5rPiR1cmw8L2xpbms+IiA6ICgpLAogICAgICAgbGVuZ3RoKCRkZXNjcmlwdGlvbikgPyAiPGRlc2NyaXB0aW9uPiRkZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+IiA6ICgpLAogICAgICksCiAgICAgIjwvaXRlbT4kTWF5YmVOTFxuIiwKICB9CiAgREVCVUcgYW5kIHByaW50ICJfaXRlbXNfYXNfeG1sIHJldHVybmluZyB7XG4iLCBqb2luKCcnLCBAeG1sX291dCksICJ9XG5cbiI7CiAgCiAgcmV0dXJuIGpvaW4gJycsIEB4bWxfb3V0Owp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCnN1YiBfaW1hZ2VfYXNfeG1sIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIHJldHVybiAnJyB1bmxlc3MKICAgICRzZWxmLT5pbWFnZV91cmwgYW5kICRzZWxmLT5pbWFnZV9oZWlnaHQgYW5kICRzZWxmLT5pbWFnZV93aWR0aDsKCiAgIyA8IUVMRU1FTlQgaW1hZ2UgKHRpdGxlIHwgdXJsIHwgbGluayB8IHdpZHRoPyB8IGhlaWdodD8gfCBkZXNjcmlwdGlvbj8pKj4KCiAgcmV0dXJuIGpvaW4gJycsCiAgICAiPGltYWdlPlxuIiwKICAgIG1hcCgiICAkX1xuIiA9PgogICAgICAkc2VsZi0+eG1sZWxlbSggJ3RpdGxlJyAgPT4gJHNlbGYtPmltYWdlX3RpdGxlIHx8ICRzZWxmLT5odG1sMnRleHQoJHNlbGYtPnRpdGxlKSksCiAgICAgICRzZWxmLT54bWxlbGVtKCAndXJsJyAgICA9PiAkc2VsZi0+aW1hZ2VfdXJsKSwgIyB1cmwgb2YgdGhlIGltYWdlCiAgICAgICRzZWxmLT54bWxlbGVtKCAnbGluaycgICA9PiAkc2VsZi0+aW1hZ2VfbGluayAgfHwgJHNlbGYtPmh0bWwydGV4dCgkc2VsZi0+dXJsICApKSwKICAgICAgJHNlbGYtPnhtbGVsZW0oICd3aWR0aCcgID0+ICRzZWxmLT5pbWFnZV93aWR0aCksCiAgICAgICRzZWxmLT54bWxlbGVtKCAnaGVpZ2h0JyA9PiAkc2VsZi0+aW1hZ2VfaGVpZ2h0KSwKICAgICAgJHNlbGYtPnhtbGVsZW0oICdkZXNjcmlwdGlvbicKICAgICAgICAgICAgICAgICA9PiAkc2VsZi0+aW1hZ2VfZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgICAgICB8fCAkc2VsZi0+aHRtbDJ0ZXh0KCRzZWxmLT5kZXNjcmlwdGlvbikpLAogICAgKSwKICAgICI8L2ltYWdlPlxuIiwKICA7Cn0KCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCj1pdGVtIEM8Z2V0X3VybCggSTx1cmw+ICk7PgoKPWl0ZW0gQzwkY29udGVudCA9IGdldF91cmwoIEk8dXJsPiApOz4KCj1pdGVtIEk8b3I6PiBDPDwgJGNvbnRlbnQgPSAkcnNzLT5nZXRfdXJsKC4uLik7ID4+Cgo9aXRlbSBJPG9yOj4gQzw8ICRjb250ZW50LT5nZXRfdXJsKC4uLik7ID4+CgpUaGlzIHRyaWVzIHRvIGdldCB0aGUgY29udGVudCBvZiB0aGUgZ2l2ZW4gdXJsLCBhbmQgcmV0dXJucyBpdC4KClRoaXMgaXMgcXVpdGUgbGlrZSBMPExXUDo6U2ltcGxlPidzIEM8Z2V0PiBmdW5jdGlvbiwgYnV0IHdpdGggc29tZQphZGRpdGlvbmFsIGZlYXR1cmVzOgoKPW92ZXIKCj1pdGVtICogSWYgaXQgY2FuJ3QKZ2V0IHRoZSBVUkwncyBjb250ZW50IGF0IGZpcnN0LCBpdCB3aWxsIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzIGFuZCB0cnkKYWdhaW4sIHVwIHRvIGFib3V0IGZpdmUgdGltZXMuIChUaGlzIGlzIHRvIGF2b2lkIHRoZSBjYXNlIG9mIHRoZSBVUkwKYmVpbmcgdGVtcG9yYXJpbHkgaW5hY2Nlc3NpYmxlIHNpbXBseSBiZWNhdXNlIHRoZSBETlMgaXMgYSBiaXQgc2xvdywKb3IgYmVjYXVzZSB0aGUgc2VydmVyIGlzIHRvbyBidXN5LikKCj1pdGVtICogSWYgaXQgY2FuJ3QgZ2V0IHRoZSBjb250ZW50LCBldmVuIGFmdGVyIHNldmVyYWwgcmV0cmllcywKaXQgd2lsbCBhYm9ydCB0aGUgcHJvZ3JhbSAobGlrZSBhIEM8ZGllPikuICBJZiB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGlzCmJlaGF2aW9yLCB0aGVuIGNhbGwgaXQgYXMgQzxldmFsIHsgZ2V0X3VybCgkdXJsKSB9Oz4KCj1pdGVtICogSWYgeW91IGNhbGwgdGhlIGZ1bmN0aW9uIGluIHZvaWQgY29udGV4dCAoaS5lLiwgbm90IHVzaW5nIGl0cwpyZXR1cm4gdmFsdWUpLCB0aGVuIHRoZSBmdW5jdGlvbiBhc3NpZ25zIHRoZSBVUkwncyBjb250ZW50IHRvIEM8JF8+LgpUaGF0J3Mgc28geW91IGNhbiB3cml0ZSBuaWNlIGNvbmNpc2UgY29kZSBsaWtlIHRoaXM6CgogICAgICAgICAgIGdldF91cmwgJHRoYXRzaXRlOwogICAgICAgICAgIG0vVG9wIFN0b3JpZXMgVG9uaWdodC8gb3IgZGllICJXaGF0LCBubyB0b3Agc3Rvcmllcz8iOwogICAgICAgICAgIHdoaWxlKCBtezxhIGNsYXNzPSJ0b3AiIGhyZWY9IiguKj8pIj4oLio/KTwvYT59ZyApIHsKICAgICAgICAgICAgIHJzc19pdGVtKCIkdGhhdHNpdGUvJDEiLCAkMik7CiAgICAgICAgICAgfQoKPWl0ZW0gKiBUaGlzIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhlIFVSTCBub3QgZXhhY3RseSBhcy1pcywgYnV0IGFmdGVyCmNoYW5naW5nIGl0cyBuZXdsaW5lcyB0byBuYXRpdmUgZm9ybWF0LiAgVGhhdCBpcywgaWYgdGhlIGNvbnRlbnRzIG9mIHRoZQpVUkwgdXNlIENSLUxGIHBhaXJzIHRvIGV4cHJlc3MgbmV3bGluZXMsIHRoZW4gQzxnZXRfdXJsPiBjaGFuZ2VzIHRoZXNlCnRvIEM8XG4+J3MgYmVmb3JlIHJldHVybmluZyB0aGUgY29udGVudC4gIChTaW1pbGFybHkgZm9yIG9sZCBNYWNPUwpuZXdsaW5lIGZvcm1hdC4pICBDbGVhcmx5IHRoaXMgaXMgd3JvbmcgaW4geW91J3JlIGRlYWxpbmcgd2l0aCBiaW5hcnkKZGF0YTsgaW4gdGhhdCBjYXNlLCB1c2UgTFdQOjpTaW1wbGUncyBDPGdldD4gZGlyZWN0bHkuCgo9aXRlbSAqIEZpbmFsbHksIGFzIGEgcmVzb3VyY2UtY29udmVyc2F0aW9uIG1lYXN1cmUsIHRoaXMgZnVuY3Rpb24Kd2lsbCBhbHNvIHRyeSB0byBjYWxsIEM8c2xlZXA+IGEgZmV3IHRpbWVzIGlmIGl0IHNlZXMgc2V2ZXJhbCBxdWljawpjYWxscyB0byBpdHNlbGYgY29taW5nIGZyb20gYSBwcm9ncmFtIHRoYXQgc2VlbXMgdG8gYmUgcnVubmluZwp1bmRlciBjcm9udGFiLiAgQXMgbW9zdCBvZiBteSBSU1MtZ2VuZXJhdG9ycyBhcmUgY3JvbnRhYmJlZCwgSQpmaW5kIGl0IHZlcnkgdXNlZnVsIHRoYXQgSSBjYW4gaGF2ZSBob3dldmVyIG1hbnkgQzxnZXRfdXJsPidzIGluCm15IGNyb250YWJiZWQgcHJvZ3JhbXMgd2l0aG91dCB3b3JyeWluZyB0aGF0IHRoZXknbGwgdGFrZSBldmVuIGEKbm90aWNlYWJsZSBwYXJ0IG9mIHRoZSBzZXJ2ZXIncyBiYW5kd2lkdGguCgo9YmFjawoKPWN1dAoKbXkgJGxhc3RfdXJsX2dldF90aW1lOwoKc3ViIGdldF91cmwgKCQpIHsKICBteSAkc2VsZiA9IHNoaWZ0IGlmIEBfID4gMTsgIyB3b3JrIGFzIGEgZnVuY3Rpb24gb3IgbWV0aG9kCgogICMgIEdvIHdoaXAgdXAgYW4gb2JqZWN0IHVubGVzcyBvbmUgd2FzIGdpdmVuOgogICRzZWxmID0gKCRSU1Nfb2JqIHx8PSBYTUw6OlJTUzo6U2ltcGxlR2VuOjotPm5ldykgdW5sZXNzIGRlZmluZWQgJHNlbGY7CiAgJHNlbGYgPSAkc2VsZi0+bmV3IHVubGVzcyByZWYgJHNlbGY7CiAgCiAgbXkgJHVybCA9ICRfWzBdOwogIENhcnA6OmNyb2FrICJcIiR1cmxcIiBkb2Vzbid0IGxvb2sgbGlrZSBhIFVSTCFcbkFib3J0aW5nIgogICB1bmxlc3MgZGVmaW5lZCgkdXJsKSBhbmQgJHVybCA9fiBte15bYS16XStbYS16MC05XSo6XFMrJH1zOwogIAogIGlmKCRTbGVlcHkgYW5kICRsYXN0X3VybF9nZXRfdGltZSkgewogICAgbXkgJGRlbGF5ID0gJFNsZWVweSAtICh0aW1lKCkgLSAkbGFzdF91cmxfZ2V0X3RpbWUpOwogICAgaWYoICRkZWxheSA+IDAgKSB7CiAgICAgIERFQlVHIGFuZCBwcmludCAiTGFzdCBVUkxnZXQgd2FzIGF0ICRsYXN0X3VybF9nZXRfdGltZSwgc2xlZXAgJGRlbGF5XG4iOwogICAgICBzbGVlcCAkZGVsYXk7CiAgICB9IGVsc2UgewogICAgICBERUJVRyBhbmQgcHJpbnQgIkxhc3QgVVJMZ2V0IHdhcyBhdCAkbGFzdF91cmxfZ2V0X3RpbWUsIHNvIG5vIHNsZWVwLlxuIjsKICAgIH0KICB9CiAgCiAgbXkgJGNvbnRlbnQ7CiAgbXkgJGNvdW50ID0gMDsKICBmb3JlYWNoIG15ICRkZWxheSAoQFJldHJ5X2RlbGF5cywgMCkgewogICAgZGVsZXRlICRzZWxmLT57J19sb29wcyd9OwogICAgZGVsZXRlICRzZWxmLT57J19odHRwX2Fib3J0J307CgogICAgREVCVUcgYW5kIHByaW50ICJHZXR0aW5nICR1cmwgLi4uXG4iOwogICAgKyskY291bnQ7CiAgICBpZiggZGVmaW5lZCgKICAgICAgJGNvbnRlbnQgID0gICRzZWxmLT5fZ2V0KCR1cmwpCiAgICApKSB7CiAgICAgIERFQlVHIGFuZCBwcmludCAiT0ssIGdvdCBpdCAoIiwgbGVuZ3RoKCRjb250ZW50KSwgIiBieXRlcylcbiI7CiAgICAgIGxhc3Q7CiAgICB9CiAgICAKICAgIGlmKCAkc2VsZi0+eydfaHR0cF9hYm9ydCd9ICkgewogICAgICBERUJVRyBhbmQgcHJpbnQgIkNvdWxkbid0IGdldCBpdCBhbmQgd29uJ3QgcmV0cnkgKCIsIAogICAgICAgICRzZWxmLT57J19odHRwX2Fib3J0J30sICIpXG4iOwogICAgICBsYXN0OwogICAgfSBlbHNlIHsKICAgICAgREVCVUcgYW5kIHByaW50ICJPZGQsIGNvdWxkbid0IGdldCBpdC5cbiI7CiAgICB9CiAgICBpZigkZGVsYXkpIHsgREVCVUcgYW5kIHByaW50ICJTbGVlcGluZyAkZGVsYXkgc2VjLi4uXG4iOyBzbGVlcCAkZGVsYXk7IH0KICB9CiAgJGxhc3RfdXJsX2dldF90aW1lID0gdGltZSgpOwoKICB1bmxlc3MoIGRlZmluZWQgJGNvbnRlbnQgKSB7CiAgICBteSAkaGVhZGVycyA9ICRzZWxmLT57J19odHRwX2hlYWRlcnMnfTsKICAgIGlmKCAkaGVhZGVycyBhbmQgJGhlYWRlcnMgPX4gc3tefXsgIH1tZyApIHsKICAgICAgJGhlYWRlcnMgPSAiXG5SZXNwb25zZSBoZWFkZXJzOlxuJGhlYWRlcnMiOwogICAgfSBlbHNlIHsKICAgICAgJGhlYWRlcnMgPSAnJzsKICAgIH0KICAgICRjb3VudCAuPSAoJGNvdW50ID09IDEpID8gIiB0cnkiIDogIiB0cmllcyI7CiAgICBDYXJwOjpjcm9haygiQ291bGRuJ3QgZ2V0ICR1cmwgaW4gJGNvdW50JGhlYWRlcnNcblNvLCBhYm9ydGluZyIpCiAgfQogIAogIGlmKCROYXRpdml6ZV9uZXdsaW5lcykgewogICAgaWYoIlxuIiBlcSAiXGNqIikgeyAgICAgICAjIENSID0+IExGICAgIENSIExGTEYuLi4gPT4gTEYgICBMRiA9PiBMRgogICAgICAkY29udGVudCA9fiBzL1xjbVxjaiovXG4vZzsgIyBtb3N0IGVmZmljaWVudCwgSSBkYXJlIHNheQogICAgfSBlbHNpZigiXG4iIGVxICJcY20iKSB7ICAjIENSID0+IENSICAgIENSIExGTEYuLi4gPT4gQ1IgICBMRiA9PiBDUgogICAgICAkY29udGVudCA9fiBzLyg/Oig/OlxjbVxjaispfFxjaikvXG4vZzsKICAgIH0gZWxzZSB7CiAgICAgICRjb250ZW50ID1+IHMvKD86XG58XHJ8XG5ccikvXG4vZzsKICAgIH0KICB9CiAgCiAgJF8gPSAkY29udGVudCB1bmxlc3MgZGVmaW5lZCB3YW50YXJyYXk7CiAgcmV0dXJuICRjb250ZW50Owp9CgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgVGhpbmdzIGJlbG93IGhlcmUgYXJlIGxlc3MgYW5kIGxlc3MgaW50ZXJlc3RpbmcgdG8gdGhlIGNhc3VhbCByZWFkZXIuCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKc3ViIF9nZXQgewogIG15ICRzZWxmID0gc2hpZnQ7CiAgaWYoCiAgICAhJExXUDo6U2ltcGxlOjpWRVJTSU9OCiAgICBhbmQgJF9bMF0gPX4gbXteaHR0cDovLyhbXiBcblxyXHQvOlxAXSspKD86OihcZCspKT8oL1xTKik/JH0KICApIHsKICAgIG15ICRob3N0ID0gJDE7CiAgICBteSAkcGF0aCA9ICQzOwogICAgbXkgJHBvcnQgPSAwICsgKCQyIHx8IDgwKTsKICAgIGlmKCAkQmFkUG9ydHN7JHBvcnR9ICkgewogICAgICBERUJVRyBhbmQgcHJpbnQgIldlIGRvbid0IGxpa2UgcG9ydCAkcG9ydCBmcm9tICRfWzBdXG4iOwogICAgICByZXR1cm4gdW5kZWY7CiAgICB9CiAgICAKICAgICRwYXRoID0gIi8iIHVubGVzcyBkZWZpbmVkKCRwYXRoKTsKICAgICRzZWxmID0gJHNlbGYtPm5ldyB1bmxlc3MgcmVmKCRzZWxmKTsgIyBuZWVkIHRvIGJlIGFuIG9iamVjdCBtZXRob2QKICAgIHJldHVybiAkc2VsZi0+X3RyaXZpYWxfaHR0cF9nZXQoJGhvc3QsICRwb3J0LCAkcGF0aCk7CiAgfSBlbHNlIHsKICAgIHJldHVybiAkc2VsZi0+X2x3cF9nZXQoQF8pOwogIH0KfQoKc3ViIF9sd3BfZ2V0IHsKICByZXF1aXJlIExXUDo6U2ltcGxlOwogIERFQlVHIGFuZCBwcmludCAiQ2FsbGluZyBMV1A6OlNpbXBsZSBvbiAkX1sxXVxuIjsKICByZXR1cm4gTFdQOjpTaW1wbGU6OmdldCgkX1sxXSk7Cn0KCnN1YiBfdHJpdmlhbF9odHRwX2dldCB7CiAgIG15KCRzZWxmLCAkaG9zdCwgJHBvcnQsICRwYXRoKSA9IEBfOwogICBERUJVRyA+IDEgYW5kIHByaW50ICJHZXR0aW5nIEhPU1Q9JGhvc3QsIFBPUlQ9JHBvcnQsIFBBVEg9JHBhdGhcbiI7CgogICAkc2VsZiA9ICRzZWxmLT5uZXcgdW5sZXNzIHJlZigkc2VsZik7ICMgbmVlZCB0byBiZSBhbiBvYmplY3QgbWV0aG9kCiAgIG15ICRzZWVuID0gKCAkc2VsZi0+eydfbG9vcHMnfSB8fD0ge30gKTsKCiAgIHJlcXVpcmUgSU86OlNvY2tldDsKICAgbG9jYWwoJF5XKSA9IDA7CiAgIG15ICRzb2NrID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KFBlZXJBZGRyID0+ICRob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyUG9ydCA9PiAkcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG8gICAgPT4gJ3RjcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgID0+IDYwKSB8fCByZXR1cm4gdW5kZWY7CiAgICRzb2NrLT5hdXRvZmx1c2g7CiAgIG15ICRuZXRsb2MgPSAkaG9zdDsKICAgJG5ldGxvYyAuPSAiOiRwb3J0IiBpZiAkcG9ydCAhPSA4MDsKICAgcHJpbnQgJHNvY2sgam9pbigiXDAxNVwwMTIiID0+CiAgICAgICAgICAgICAgICAgICJHRVQgJHBhdGggSFRUUC8xLjAiLAogICAgICAgICAgICAgICAgICAiSG9zdDogJG5ldGxvYyIsCiAgICAgICAgICAgICAgICAgICJVc2VyLUFnZW50OiAkVXNlckFnZW50U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIiIsICIiKTsKCiAgIG15ICRidWYgPSAiIjsKICAgbXkgJG47CiAgIHdoaWxlKCAkbiA9IHN5c3JlYWQoJHNvY2ssICRidWYsIDgqMTAyNCwgbGVuZ3RoKCRidWYpKSApIHsKICAgICBERUJVRyA+IDEwIGFuZCBwcmludCAiICAgIEdvdCAkbiBieXRlcy4uLlxuIjsKICAgICAxOwogICB9CiAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCgkbik7CgogICBpZiggJGJ1ZiA9fiBte15IVFRQL1xkK1wuXGQrXHMrKFxkKylbXlwwMTJdKlwwMTJ9ICkgewogICAgIG15ICRjb2RlID0gJDE7CiAgICAgREVCVUcgYW5kIHByaW50ICIgR290IEhUVFAgc3RhdHVzOiAkY29kZVxuIjsKICAgICBpZiggJGNvZGUgPX4gbS9eMzBbMTIzN10vcyBhbmQgJGJ1ZiA9fiBtL1wwMTJMb2NhdGlvbjpccyooXFMrKS8gKSB7CiAgICAgICAjIFJlZGlyZWN0aW9uCiAgICAgICBteSAkdXJsID0gJDE7CiAgICAgICBpZiggJHVybCA9fiBtL14oZmlsZXxtYWlsdG8pOi8gICMgcHJvdG9jb2xzIHdlIGhhdGUKICAgICAgICAgb3IgJHNlZW4tPnskdXJsfSsrCiAgICAgICAgIG9yIHNjYWxhcihrZXlzICUkc2VlbikgPiAyMAogICAgICAgKSB7CiAgICAgICAgIERFQlVHIGFuZCBwcmludCAiSSBkb24ndCBsaWtlIHRoZSByZWRpcmVjdGlvbiByZXNwb25zZSAkdXJsXG4iOwogICAgICAgICAkc2VsZi0+eydfaHR0cF9hYm9ydCd9ID0gIkJhZCBIVFRQLXJlZGlyZWN0aW9uIGxvb3AuIjsKICAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgICAgfQogICAgICAgcmV0dXJuICRzZWxmLT5fZ2V0KCR1cmwpOyAgIyBSZWN1cnNlIQogICAgIH0KCiAgICAgJGJ1ZiA9fiBzLyguKz8pXDAxNT9cMDEyXDAxNT9cMDEyLy9zOyAgIyB6YXAgdGhlIGhlYWRlcgogICAgICggJHNlbGYtPnsnX2h0dHBfaGVhZGVycyd9ID0gJDEgKSAgID1+ICAgdHIvXDAxNVwwMTIvXG4vc2Q7CiAgICAgCiAgICAgREVCVUcgPiAxMCBhbmQgcHJpbnQgIkhlYWRlcnM6ICQkc2VsZnsnX2h0dHBfaGVhZGVycyd9XG4iOwogICAgIAogICAgICRzZWxmLT57J19odHRwX2Fib3J0J30gPSAiSFRUUCBzdGF0dXMgJGNvZGUiCiAgICAgIGlmICRjb2RlIGVxICc0MDQnIG9yICRjb2RlIGVxICc0MDMnOwogICAgIHJldHVybiB1bmRlZiB1bmxlc3MgJGNvZGUgPX4gbS9eMi87CiAgICAgCiAgICAgREVCVUcgYW5kIHByaW50ICJSZXR1cm5pbmcgIiwgbGVuZ3RoKCRidWYpLCAiIGJ5dGVzIG9mIGNvbnRlbnQuXG4iOwogICB9IGVsc2UgewogICAgIERFQlVHIGFuZCBwcmludCAiR290IGEgaGVhZGVybGVzcyByZXNwb25zZS4gIFJldHVybmluZy5cbiI7CiAgIH0KCiAgIHJldHVybiAkYnVmOwp9CgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCnN1YiBfcmVhZF9oaXN0b3J5X2ZpbGUgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJGhmID0gJHNlbGYtPmhpc3RvcnlfZmlsZTsKICB1bmxlc3MoZGVmaW5lZCAkaGYgYW5kIGxlbmd0aCAkaGYpIHsKICAgIERFQlVHIGFuZCBwcmludCAiTm8gaGlzdG9yeV9maWxlIGRlZmluZWQgZm9yICRzZWxmLlxuIjsKICAgIHJldHVybjsKICB9CiAgCiAgbXkoJWZpcnN0LCAlbGFzdCk7ICAjICJsYXN0IiBpbiB0aGUgc2Vuc2Ugb2YgIm1vc3QgcmVjZW50bHkiCiAgJHNlbGYtPnsnX2ZpcnN0X3NlZW4nfSA9IFwlZmlyc3Q7CiAgJHNlbGYtPnsnX2xhc3Rfc2VlbicgfSA9IFwlbGFzdCA7CgogIHVubGVzcyggLWUgJGhmIGFuZCAtcyBfICkgewogICAgJHNlbGYtPnsnX3Zpcmdpbl9pdGVtX3RpbWVzdGFtcCd9ID0gdGltZSgpIGlmICREV0lNOwogICAgcmV0dXJuIDA7CiAgfQoKICBteSAkbm93ID0gdGltZSgpOwogIG15ICRmb3JnZXRfYmVmb3JlOwogIAogIG15ICRpbjsKICB7CiAgICBsb2NhbCAqSU47CiAgICBvcGVuKElOLCAkaGYpIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHJlYWQtb3BlbiAkaGY6ICQhIjsgICMgaW5zYW5lCiAgICAkaW4gPSAqSU57SU99OwogIH0KICBsb2NhbCAkXzsKICBteSBAZjsKICB3aGlsZSg8JGluPikgewogICAgdHIvXG5cci8vZDsKICAgIG5leHQgdW5sZXNzIEBmID0gc3BsaXQgIlx0IiwgJF8sIDMgYW5kIGRlZmluZWQoJGZbMF0pIGFuZCBsZW5ndGgoJGZbMF0pOwoKICAgICRsYXN0eyRmWzBdfSA9ICRmWzJdIGlmICRmWzJdOwoKICAgIGlmKCAkZlsxXSApIHsKICAgICAgJGZpcnN0eyRmWzBdfSA9ICRmWzFdOwogICAgICBERUJVRyA+IDMgYW5kIHByaW50ICIgTGVhcm5pbmcgJGZbMF0gZmlyc3Qgc2VlbiBhdCAkZlsxXVxuIjsKICAgIH0gZWxzZSB7CiAgICAgICRmaXJzdHskZlswXX0gPSAkbm93OwogICAgICBERUJVRyA+IDMgYW5kIHByaW50ICIgUHJlbGVhcm5pbmcgJGZbMF0gZmlyc3Qgc2VlbiBhdCAkZlsxXVxuIjsKICAgICAgICMgVE9ETzogaXMgdGhpcyB1c2VmdWw/CiAgICB9CiAgfQogIGNsb3NlKCRpbik7CgogIHJldHVybiAxOwp9CgojIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4KCnN1YiBfd3JpdGVfaGlzdG9yeV9maWxlIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoZiA9ICRzZWxmLT5oaXN0b3J5X2ZpbGU7CiAgdW5sZXNzKGRlZmluZWQgJGhmIGFuZCBsZW5ndGggJGhmKSB7CiAgICBERUJVRyBhbmQgcHJpbnQgIk5vIGhpc3RvcnlfZmlsZSBkZWZpbmVkIGZvciAkc2VsZi5cbiI7CiAgICByZXR1cm47CiAgfQogIAogIG15ICRmaXJzdCA9ICRzZWxmLT57J19maXJzdF9zZWVuJ307CiAgbXkgJGxhc3QgID0gJHNlbGYtPnsnX2xhc3Rfc2VlbicgfTsKICBteSAkbm93ICAgPSB0aW1lKCk7CiAgCiAgbXkgJG91dDsKICBERUJVRyBhbmQgcHJpbnQgIlNhdmluZyB0byBoaXN0b3J5IGZpbGUgJGhmXG4iOwogIERFQlVHID4gMiBhbmQgcHJpbnRmICJUaW1lIG5vdzogJXMgPSAlc1xuIiwgdGltZSgpLCBzY2FsYXIobG9jYWx0aW1lKTsKICB7CiAgICBsb2NhbCAqSEY7CiAgICBvcGVuKEhGLCAiPiRoZiIpIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHdyaXRlLW9wZW4gJGhmOiAkISI7ICAjIGluc2FuZQogICAgJG91dCA9ICpIRntJT307CiAgfQogIHsKICAgIG15KEBmLCBAeCk7CiAgICB7CiAgICAgIG15ICV4OwogICAgICBAeHtrZXlzICUkZmlyc3QsIGtleXMgJSRsYXN0fSA9ICgpOwogICAgICBAeCA9IHNvcnQga2V5cyAleDsKICAgIH0KCiAgICBteSAkZm9yZ2V0X2JlZm9yZTsKICAgIHsKICAgICAgbXkgJHIgPSAkc2VsZi0+cmV0ZW50aW9uOwogICAgICBpZiggJHIgYW5kICRyID4gMCApIHsgJGZvcmdldF9iZWZvcmUgPSB0aW1lKCkgLSAkciB9CiAgICB9CiAgICBmb3JlYWNoIG15ICRrZXkgKEB4KSB7CiAgICAgIG5leHQgaWYgJGtleSA9fiBtL1tcdFxuXHJdLzsKICAgICAgaWYoICRmb3JnZXRfYmVmb3JlIGFuZCAkbGFzdC0+eyRrZXl9IDwgJGZvcmdldF9iZWZvcmUgKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ZigKICAgICAgICAgICIgRm9yZ2V0dGluZyAlcyBhcyBiZWluZyB0b28gb2xkIHNpbmNlIGxhc3Qtc2VlbiAoJXMgPSAlcylcbiIsCiAgICAgICAgICAka2V5LAogICAgICAgICAgJGxhc3QtPnska2V5fSwKICAgICAgICAgIHNjYWxhcihsb2NhbHRpbWUoJGxhc3QtPnska2V5fSkpLAogICAgICAgICk7CiAgICAgICAgbmV4dDsKICAgICAgfQogICAgICBwcmludCAkb3V0ICAgICAgJGtleSwgIlx0IiwKICAgICAgICAkZmlyc3QtPnska2V5fXx8JycsICJcdCIsCiAgICAgICAgICRsYXN0LT57JGtleX18fCcnLCAiXG4iLAogICAgICA7CiAgICAgIAogICAgICBpZihERUJVRyA+IDIpIHsKICAgICAgICBwcmludGYgIiAgS2V5ICVzXG4gICAgRmlyc3Qgc2VlbjogJXMgPSAlc1xuICAgIExhc3Qgc2VlbjogICVzID0gJXNcbiIsCiAgICAgICAgICAka2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpcnN0LT57JGtleX18fCctJywKICAgICAgICAgIHNjYWxhcihsb2NhbHRpbWUoICRmaXJzdC0+eyRrZXl9fHwwICApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdC0+eyRrZXl9fHwnLScsCiAgICAgICAgICBzY2FsYXIobG9jYWx0aW1lKCAgJGxhc3QtPnska2V5fXx8MCAgKSksCiAgICAgIH0KCiAgICB9CiAgICBjbG9zZSgkb3V0KTsKICB9CiAgREVCVUcgYW5kIHByaW50ICJEb25lIHNhdmluZyB0byAkaGZcbiI7CiAgcmV0dXJuIDE7Cn0KCiMtXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXwoKCj1pdGVtIEM8cnNzX2hvdXJseT4gSTxvcj4gQzxyc3NfZGFpbHk+IEk8b3I+IEM8cnNzX3R3aWNlX2RhaWx5PgogSTxvcj4gQzxyc3NfdGhyaWNlX2RhaWx5PiBJPG9yPiBDPHJzc193ZWVrbHk+IEk8b3I+IEM8cnNzX2V2ZXJ5X290aGVyX2hvdXI+CgpDYWxsaW5nIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMgZGVjbGFyZXMgdGhhdCB0aGlzIGZlZWQgaXMgdXN1YWxseQpnZW5lcmF0ZWQgYXQgdGhlIHNhbWUgdGltZShzKSBldmVyeSBkYXkgKG9yIGV2ZXJ5IHdlZWssIGluIHRoZSBjYXNlIG9mCkM8cnNzX3dlZWtseT4pLiBBbmQsIHdoZXJlIGl0J3Mgbm90IGp1c3Qgb25jZSBhIGRheS93ZWVrLCB0aGVzZSBtdWx0aXBsZQp0aW1lcyBhIGRheSBhcmUgZXZlbmx5IHNwYWNlZC4gIFRoZXNlIGZ1bmN0aW9ucyB0aGVuIHNldCB0aGUgZmVlZCdzCkM8dXBkYXRlUGVyaW9kPiwgQzx1cGRhdGVCYXNlPiwgQzx1cGRhdGVGcmVxdWVuY3k+LCBDPHNraXBIb3Vycz4sCkM8c2tpcERheXM+LCBhbmQgQzx0dGw+IGVsZW1lbnRzIGFwcHJvcHJpYXRlbHksIHNvIHRoYXQgUlNTIHJlYWRlcnMgY2FuIGtub3cgYXQKYXQgd2hhdCB0aW1lcyB0aGVyZSBjb3VsZCAob3IgY291bGRuJ3QpIGJlIG5ldyBjb250ZW50IGluIHRoaXMgZmVlZC4KCkluIG90aGVyIHdvcmRzOiB1c2UgQzxyc3NfdHdpY2VfZGFpbHk+IGlmIHRoaXMgZmVlZCBpcyB1cGRhdGVkIGF0IGFib3V0IHRoZQpzYW1lIHRpbWUgZXZlcnkgZGF5IGFuZCB0aGVuIGFnYWluIDEyIGhvdXJzIGxhdGVyLiAgVXNlIEM8cnNzX3RocmljZV9kYWlseT4KaWYgdGhpcyBmZWVkIGlzIHVwZGF0ZWQgYXQgdGhlIHNhbWUgdGltZSBkYWlseSwgYW5kIHRoZW4gOCBob3VycyBsYXRlciwgYW5kCnRoZW4gOCBob3VycyBsYXRlci4gIEFuZCB1c2UgQzxyc3NfZXZlcnlfb3RoZXJfaG91cj4gaWYgdGhlIGZlZWQgdXBkYXRlcwphdCBhYm91dCBJPG4+IG1pbnV0ZXMgcGFzdCBldmVyeSBldmVuIG51bWJlcmVkIGhvdXIsIG9yIGV2ZXJ5IG9kZC1udW1iZXJlZApob3VyLgoKQ2xlYXJseSBJIG1lYW4gdGhlc2UgZnVuY3Rpb25zIHRvIGJlIHVzZWQgaW4gcHJvZ3JhbXMgdGhhdCBhcmUgY3JvbnRhYmJlZAp0byBydW4gYXQgcGFydGljdWxhciBpbnRlcnZhbHMsIGFzIHdpdGggYSBjcm9udGFiIGxpbmUgbGlrZSBvbmUgb2YgdGhlc2U6CgogICAgICAgNTIgKiAqICogKiAgICAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3NfaG91cmx5CiAgICAgICA1MiAyMyAqICogKiAgICAgICAgfi90aGluZ3kgICAjID0+IHJzc19kYWlseQogICAgICAgNTIgNCwxNiAqICogKiAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3NfdHdpY2VfZGFpbHkKICAgICAgIDUyIDUsMTMsMjEgKiAqICogICB+L3RoaW5neSAgICMgPT4gcnNzX3RocmljZV9kYWlseQogICAgICAgNTIgMjMgKiAqIDMgICAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3Nfd2Vla2x5CiAgICAgICA1MiAqLzIgKiAqICogICAgICAgfi90aGluZ3kgICAjID0+IHJzc19ldmVyeV9vdGhlcl9ob3VyCgpDbGVhcmx5IHRoZXJlIGFyZW4ndCBDPHJzc19JPGludGVydmFsPj4gZnVuY3Rpb25zIGZvciBhbGwgdGhlIHNjaGVkdWxpbmcKcG9zc2liaWxpdGllcyBwcm9ncmFtcyAtLSBpZiB5b3UgaGF2ZSBhIHByb2dyYW0gdGhhdCBoYXMgdG8gcnVuIGF0CjZhbSwgOGFtLCAxcG0sIGFuZCA0cG0sIHRoZXJlJ3Mgbm8gZnVuY3Rpb24gZm9yIHRoYXQuICBIb3dldmVyLCB0aGUgYWJvdmUKY3JvbnRhYiBsaW5lcyAob3Igd2l0aCBtaW5vciBjaGFuZ2VzLCBsaWtlIEM8MSw5LDE3PiBpbnN0ZWFkIG9mIEM8NSwxMywyMT4pCmFyZSBqdXN0IGZpbmUgZm9yIGFsbW9zdCBldmVyeSBSU1MgZmVlZCBJJ3ZlIHJ1bi4KCkFuIGFzaWRlOiBJIHJlY29tbWVuZCBydW5uaW5nIHRoZSBwcm9ncmFtcyBhdCBhYm91dCA1MiBtaW51dGVzIHBhc3QgdGhlIGhvdXIsCmdlbmVyYWxseSBpbiBzZXJpZXMsIGxpa2Ugc286CgogICAgICAgNTIgNSwxMywyMSAqICogKiAgIH4vdGhpbmd5IDsgfi9kb2RhZCA7IH4vbWFrZXRoaW5nIDsgfi9naXptbwoKSG93ZXZlciwgeW91ciBtaWxlYWdlIG1heSB2YXJ5LgoKSW5jaWRlbnRhbGx5LCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBubyBhcmd1bWVudHMsIHNvIHRoZSBwYXJlbnRoZXNlcyBhcmUKb3B0aW9uYWwuICBUaGF0IGlzLCB0aGVzZSB0d28gbGluZXMgZG8gdGhlIHNhbWUgdGhpbmc6CgogICAgICAgcnNzX2hvdXJseTsKICAgICAgIHJzc19ob3VybHkoKTsKCj1jdXQKCiMjIFNvbWUgaGFuZHkgaWYgc29tZXdoYXQgYXJiaXRyYXJ5IHNob3J0Y3V0czoKIwpzdWIgaG91cmx5IHsKICBteSAkc2VsZiA9ICRfWzBdOwogICRzZWxmLT51cGRhdGVQZXJpb2QoJ2hvdXJseScpOwogICRzZWxmLT50dGwoJzYwJyk7CiAgcmV0dXJuOwp9CgpzdWIgZGFpbHkgewogIG15ICRzZWxmID0gJF9bMF07CiAgJHNlbGYtPnVwZGF0ZUhvdXJzKCk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknKTsKICAkc2VsZi0+dHRsKCAyNCAqIDYwICk7CiAgcmV0dXJuOwp9CgpzdWIgdHdpY2VfZGFpbHkgIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoID0gKGdtdGltZSggJHNlbGYtPl9ub3dfcm91bmRlZF91cCApKVsyXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoICRoLCAgKCRoKzEyKSAlIDI0ICk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknLDIpOwogICRzZWxmLT50dGwoIDEyICogNjAgKTsKICByZXR1cm47Cn0KCnN1YiB0aHJpY2VfZGFpbHkgIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoID0gKGdtdGltZSggJHNlbGYtPl9ub3dfcm91bmRlZF91cCApKVsyXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoICRoLCAgKCRoKyA4KSAlIDI0LCAgKCRoKzE2KSAlIDI0ICk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknLDMpOwogICRzZWxmLT50dGwoIDggKiA2MCApOwogIHJldHVybjsKfQoKc3ViIHdlZWtseSB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoKTsKICAkc2VsZi0+dXBkYXRlRGF5cygpOwogICRzZWxmLT51cGRhdGVQZXJpb2QoJ3dlZWtseScsMSk7CiAgJHNlbGYtPnR0bCggNyAqIDI0ICogNjAgKTsKICByZXR1cm47Cn0KCnsKbXkoQG9kZHMsIEBldmVucyk7CmZvcigwIC4uIDIzKSB7IHB1c2ggQHsgICgkXyAmIDEpID8gXEBvZGRzIDogXEBldmVucyAgfSwgJF8gfQoKc3ViIGV2ZXJ5X290aGVyX2hvdXIgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJGggPSAoZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkpWzJdOwogICRzZWxmLT5za2lwSG91cnMoICgkaCAmIDEpID8gQGV2ZW5zIDogQG9kZHMpOyAKICAkc2VsZi0+dXBkYXRlUGVyaW9kKCdkYWlseScsMTIpOwogICRzZWxmLT50dGwoICcxMjAnICk7CiAgcmV0dXJuOwp9Cn0KIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpteSBAZGF5X25hbWVzID0gKAogIlN1bmRheSIsICJNb25kYXkiLCAiVHVlc2RheSIsICJXZWRuZXNkYXkiLCAiVGh1cnNkYXkiLCAiRnJpZGF5IiwgIlNhdHVyZGF5IiwgCik7Cm15ICVpc19kYXlfbmFtZTsKQGlzX2RheV9uYW1le0BkYXlfbmFtZXN9ID0gQGRheV9uYW1lczsKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9ub3dfcm91bmRlZF91cCB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkbm93ID0gJF9bMF17J19mb3JjZV9ub3cnfSAgICMgdG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzCiAgICB8fCB0aW1lKCk7CiAgaWYoICRDSFVOS19NSU5VVEVTICkgewogICAgbXkgJHR3ZWFrID0gKCRDSFVOS19NSU5VVEVTICogNjApIC0gKCRub3cgJSAoJENIVU5LX01JTlVURVMgKiA2MCkpOwogICAgREVCVUcgYW5kIHByaW50ICJUd2Vha2luZyAkbm93ICgiLCBzY2FsYXIoZ210aW1lKCRub3cpKSwKICAgICAgIiBHTVQpIGJ5ICR0d2VhayBzZWNvbmRzXG4gc28gaXQnbGwgYmUgYW4gZXZlbiAkQ0hVTktfTUlOVVRFUyBtaW51dGVzOiAiOwogICAgJG5vdyArPSAkdHdlYWs7CiAgICBERUJVRyBhbmQgcHJpbnQgIiRub3cgKCIsIHNjYWxhcihnbXRpbWUoJG5vdykpLCAiIEdNVClcbiI7CiAgfSBlbHNlIHsKICAgICMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhCiAgICBERUJVRyBhbmQgcHJpbnQgIkFyY2hvcmluZyB0aW1lYmFzZSB0byByaWdodCB0aGlzIG1vbWVudC5cbiI7CiAgfQogIHJldHVybiAkbm93Owp9CgpzdWIgX25vdyB7IHJldHVybiAkX1swXXsnX2ZvcmNlX25vdyd9IHx8IHRpbWUoKSB9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCj1iYWNrCgo9aGVhZDIgTUlOT1IgRlVOQ1RJT05TCgpUaGVzZSBhcmUgZnVuY3Rpb25zIHRoYXQgeW91IHByb2JhYmx5IHdvbid0IG5lZWQgb2Z0ZW4sIG9yIGF0IGFsbC4gIEkgaW5jbHVkZQp0aGVzZSBmb3IgdGhlIHNha2Ugb2YgY29tcGxldGVuZXNzLCBhbmQgc28gdGhhdCBhZHZhbmNlZCB1c2VycyBtaWdodCBmaW5kIHRoZW0KdXNlZnVsIGluIHNvbWUgY2FzZXMuCgo9b3ZlcgoKPWl0ZW0gQzxyc3Nfc2tpcEhvdXJzKCBJPGdtdF9ob3VyX251bSwgZ210X2hvdXJfbnVtLCAuLi4+ICk7PgoKVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBzZXRzIHRoZSBDPHNraXBIb3Vycz4gZWxlbWVudCdzIHZhbHVlcyB0byB0aGUKc3BlY2lmaWVkIEdNVCBob3VyIG51bWJlcnMuCgo9Y3V0CgpzdWIgc2tpcEhvdXJzIHsKICBteSgkc2VsZiwgQGluKSA9IEBfOwogIG15IEBza2lwaG91cnM7CiAgZm9yZWFjaCBteSAkaG91ciAoQGluKSB7CiAgICBuZXh0IHVubGVzcyBkZWZpbmVkICRob3VyOwogICAgQ2FycDo6Y3JvYWsgIlwiJGhvdXJcIiBpc24ndCBhIHZhbGlkIGhvdXIgbnVtYmVyIChtdXN0IGJlIDAtMjMpIgogICAgIHVubGVzcyAkaG91ciA8PSAyNCBhbmQgJGhvdXIgPj0gMDsKICAgIHB1c2ggQHNraXBob3VycywgKCRob3VyID09IDI0KSA/IDAgOiAoMCArICRob3VyKTsKICAgICAjIHRvbGVyYXRlICIyNCIgdG8gbWVhbiAwaC4KICB9CiAgREVCVUcgYW5kIHByaW50ICJTa2lwZGF5czogQHNraXBob3Vyc1xuIjsKICAkc2VsZi0+eydza2lwSG91cnMnfSA9IGpvaW4gJycsCiAgICAiPHNraXBIb3Vycz4iLCBtYXAoICI8aG91cj4kXzwvaG91cj4iLCBAc2tpcGhvdXJzKSwgIjwvc2tpcEhvdXJzPlxuIgogIDsKICByZXR1cm47Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWl0ZW0gQzxyc3NfdXBkYXRlSG91cnMoKTs+Cgo9aXRlbSBDPHJzc191cGRhdGVIb3VycyggSTxnbXRfaG91cl9udW0sIGdtdF9ob3VyX251bSwgLi4uPiApOz4KClRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBDPHJzc19za2lwSG91cnM+IC0tIHlvdSBjYWxsCkM8cnNzX3VwZGF0ZUhvdXJzPiB3aXRoIGEgbGlzdCBvZiBHTVQgaG91ciBudW1iZXJzLCBhbmQgCkM8cnNzX3VwZGF0ZUhvdXJzPiB3aWxsIGNhbGwgQzxyc3Nfc2tpcEhvdXJzKDAgLi4gMjMpPiBleGNlcHQgSTx3aXRob3V0Pgp3aGF0ZXZlciBob3VyIG51bWJlcnMgeW91IHNwZWNpZmllZC4KCklmIHlvdSBjYWxsIHdpdGggYW4gZW1wdHkgbGlzdCAoaS5lLiwgQzxyc3NfdXBkYXRlSG91cnMoKTs+KSwgdGhlbgp3ZSB1c2VzIEM8Z210aW1lPiB0byBmaW5kIG91dCB0aGUgY3VycmVudCBob3VyIChhbmQgcm91bmRzIGl0IHVwCmlmIGl0J3MgYWZ0ZXIgNTAgbWludXRlcyBwYXN0KSwgYmFzaWNhbGx5IGp1c3QgYXMgaWYgeW91J2QgY2FsbGVkOgoKICAgICAgcnNzX3VwZGF0ZUhvdXJzKCAoZ210aW1lKDYwMCt0aW1lKCkpKVsyXSApOwoKPWN1dAoKc3ViIHVwZGF0ZUhvdXJzIHsgIyBKdXN0IHRoZSBjb21wbGVtZW50IG9mIHNraXBIb3Vycy4KICAjIEZlZWRpbmcgaXQgKCkgbWVhbnMgdXBkYXRlcyBvbmx5IGF0IHRoaXMgaG91ciBvZiBkYXkKICAjIChUaGlzIGlzIGZpbmUgc2luY2UgeW91J2QgbmV2ZXIgbWVhbiB0byBhY3R1YWxseSBkZWNsYXJlCiAgIyBhIGZlZWQgd2hvc2UgdXBkYXRlSG91cnMgaXMgbmV2ZXIsIGkuZS4gd2hvc2Ugc2tpcEhvdXJzCiAgIyBpcyBhbGwgb2YgMC0yMykKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICVob3VyczsKICBAaG91cnN7ICBAXyAgPyAgKG1hcCAkXyswLCBAXykgIDoKICAgICggZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkgKVsyXSAgfSA9ICgpOwogICMgbWlnaHQgYXMgd2VsbCBjb3VudCAxMDo1NyBhcyAxMWgsIGV0YwogIERFQlVHIGFuZCBwcmludCAiSE9VUlMgVVBEQVRFWSA6Iiwgam9pbignICcsIHNvcnQga2V5cyAlaG91cnMpLCAiXG4iOwogICRzZWxmLT5za2lwSG91cnMoIGdyZXAgIWV4aXN0cygkaG91cnN7JF99KSwgMCAuLiAyMyApOwogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19za2lwRGF5cygpOz4KCj1pdGVtIEM8cnNzX3NraXBEYXlzKCBJPGdtdF9kYXlfbnVtLCBnbXRfZGF5X251bSwgLi4uPiApOz4KCj1pdGVtIEM8cnNzX3NraXBEYXlzKCBJPGdtdF9kYXlfbmFtZSwgZ210X2RheV9uYW1lLCAuLi4+ICk7PgoKVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBzZXRzIHRoZSBDPHNraXBEYXlzPiBlbGVtZW50J3MgdmFsdWVzIHRvIHRoZQpzcGVjaWZpZWQgd2Vla2RheXMuICBOb3RlIHRoYXQgdGhpcyBhY2NlcHRzIGVpdGhlciBpbnRlZ2VycyAobGlrZQo2IGZvciBTYXR1cmRheSwgU3VuZGF5IGJlaW5nIGVpdGhlciAwIG9yIDcpLCBvciB0aGVpciBleGFjdApFbmdsaXNoIG5hbWVzLgoKSWYgeW91IHVzZSB0aGUgQzxza2lwRGF5cz4gZmllbGQsIGNvbnNpZGVyIHRoYXQgaXQgcmVmZXJzIHRvIGRheXMKZmlndXJlZCBieSBHTVQsIG5vdCBsb2NhbCB0aW1lLiAgRm9yIGV4YW1wbGUsIGlmIEkgc2F5IHRvIHNraXAgU2F0dXJkYXlzLAp0aGF0IG1lYW5zIFNhdHVyZGF5cyBHTVQsIHdoaWNoIGluIG15IHRpbWV6b25lIChBbGFza2EpIHN0YXJ0cwppbiB0aGUgbWlkZGxlIG9mIEZyaWRheSBhZnRlcm5vb24uCgo9Y3V0CgpzdWIgc2tpcERheXMgewogIG15KCRzZWxmLEBpbikgPSBAXzsKICBteSBAc2tpcGRheXM7CiAgZm9yZWFjaCBteSAkZGF5IChAaW4pIHsKICAgIG5leHQgdW5sZXNzIGRlZmluZWQgJGRheTsKICAgIGlmKCRkYXkgPX4gbS9eWzAtN10kL3MpIHsgIyB0b2xlcmF0ZSBudW1lcmljIGRheSBzcGVjcwogICAgICAkZGF5ID0gMCBpZiAkZGF5ID09IDc7CiAgICAgICRkYXkgPSAkZGF5X25hbWVzWyRkYXldCiAgICAgICB8fCBDYXJwOjpjcm9hayAiRGF5IG51bWJlciBcIiRkYXlcIiBpcyBvdXQgb2YgcmFuZ2UgKDAtNikiOwogICAgfSBlbHNlIHsKICAgICAgQ2FycDo6Y3JvYWsgIlwiJGRheVwiIGlzbid0IGEgdmFsaWQgZGF5IG5hbWUgKHVzZSAwLTYgb3Igb25lIG9mOiBAZGF5X25hbWVzKSIKICAgICAgIHVubGVzcyAkaXNfZGF5X25hbWV7JGRheX07CiAgICB9CiAgICBwdXNoIEBza2lwZGF5cywgJGRheTsKICB9OwogIAogIERFQlVHIGFuZCBwcmludCAiU2tpcGRheXM6IEBza2lwZGF5c1xuIjsKICAkc2VsZi0+eydza2lwRGF5cyd9ID0gam9pbiAnJywKICAgICI8c2tpcERheXM+IiwgbWFwKCAiPGRheT4kXzwvZGF5PiIsIEBza2lwZGF5cyksICI8L3NraXBEYXlzPlxuIgogIDsKICByZXR1cm47Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfdXBkYXRlRGF5cygpOz4KCj1pdGVtIEM8cnNzX3VwZGF0ZURheXMoIEk8Z210X2RheV9udW0sIGdtdF9kYXlfbnVtLCAuLi4+ICk7PgoKPWl0ZW0gQzxyc3NfdXBkYXRlRGF5cyggSTxnbXRfZGF5X25hbWUsIGdtdF9kYXlfbmFtZSwgLi4uPiApOz4KClRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBDPHJzc19za2lwRGF5cz4gLS0geW91IGNhbGwKQzxyc3NfdXBkYXRlRGF5cz4gd2l0aCBhIGxpc3Qgb2YgR01UIGRheSBuYW1lcy9udW1iZXJzLCBhbmQgCkM8cnNzX3VwZGF0ZURheXM+IHdpbGwgY2FsbCBDPHJzc19za2lwRGF5cygwIC4uIDYpPiBleGNlcHQgSTx3aXRob3V0Pgp3aGF0ZXZlciBkYXlzIHlvdSBzcGVjaWZpZWQuCgpJZiB5b3UgY2FsbCB3aXRoIGFuIGVtcHR5IGxpc3QgKGkuZS4sIEM8cnNzX3VwZGF0ZURheXMoKTs+KSwgdGhlbgp3ZSB1c2VzIEM8Z210aW1lPiB0byBmaW5kIG91dCB0aGUgY3VycmVudCBkYXkgKEdNVCEpLCBiYXNpY2FsbHkKanVzdCBhcyBpZiB5b3UnZCBjYWxsZWQ6CgogICAgICByc3NfdXBkYXRlRGF5cyggKGdtdGltZSg2MDArdGltZSgpKSlbNl0gKTsKCgo9Y3V0CgpzdWIgdXBkYXRlRGF5cyB7ICMganVzdCB0aGUgY29tcGxlbWVudCBvZiBza2lwRGF5cwogICMgRmVlZGluZyBpdCAoKSBtZWFucyB1cGRhdGVzIG9ubHkgYXQgdGhpcyBkYXkgb2YgdGhlIHdlZWsKICAjIChUaGlzIGlzIGZpbmUgc2luY2UgeW91J2QgbmV2ZXIgbWVhbiB0byBhY3R1YWxseSBkZWNsYXJlCiAgIyBhIGZlZWQgd2hvc2UgdXBkYXRlRGF5cyBpcyBuZXZlciwgaS5lLiwgd2hvc2UgdXBkYXRlRGF5cwogICMgaXMgYWxsIG9mIE1vbmRheSB0aHJ1IFN1bmRheSkKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICVkYXlzOwogIEBkYXlzewogICAgbWFwIHs7CiAgICAgIG0vXlswLTddJC8gPyAkZGF5X25hbWVzWyAoJF8gPT0gNykgPyAwIDogJF8gXQogICAgICA6ICRpc19kYXlfbmFtZXskX30gPyAkXwogICAgICA6IENhcnA6OmNyb2FrICJcIiRfXCIgaXNuJ3QgYSB2YWxpZCBkYXkgbmFtZSAodXNlIDAtNiBvciBvbmUgb2Y6IEBkYXlfbmFtZXMpIgogICAgfQogICAgQF8gPyBAXyA6ICggZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkgKVs2XQogIH0gPSAoKTsKICBERUJVRyBhbmQgcHJpbnQgIkRBWVMgVVBEQVRFWSA6Iiwgam9pbignICcsIHNvcnQga2V5cyAlZGF5cyksICJcbiI7CiAgJHNlbGYtPnNraXBEYXlzKCBncmVwICFleGlzdHMoJGRheXN7JF99KSwgQGRheV9uYW1lcyApOwogIHJldHVybjsKfQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWl0ZW0gQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcmlvZHN0cmluZz4gKTs+CgpUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldHMgdGhlIEM8c3k6dXBkYXRlUGVyaW9kPiBlbGVtZW50J3MgdmFsdWUgdG8gdGhlCnBlcmlvZCBzcGVjaWZpZWQuICBZb3UgbXVzdCBzcGVjaWZ5IG9uZSBvZiB0aGUgc3RyaW5nczoKInllYXJseSIsICJtb250aGx5IiwgIndlZWtseSIsICJkYWlseSIsICJob3VybHkiLgpJIGFkdmlzZSB1c2luZyAid2Vla2x5IiBvbmx5IGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBhbmQKInllYXJseSIsICJtb250aGx5IiBvbmx5IGlmIHlvdSBJPHJlYWxseT4ga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KCj1pdGVtIEM8cnNzX3VwZGF0ZVBlcmlvZCggSTxwZXJpb2RzdHJpbmc+LCBJPGludD4sIEk8YmFzZT4gKTs+CgpUaGlzIGlzIGEgc2hvcnRjdXQgZm9yCkM8PApyc3NfdXBkYXRlUGVyaW9kKEk8cGVyaW9kc3RyaW5nPik7IHJzc191cGRhdGVGcmVxdWVuY3koSTxpbnQ+KQo+PgoKPWl0ZW0gQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcmlvZHN0cmluZz4sIEk8aW50PiwgSTxiYXNlPiApOz4KClRoaXMgaXMgYSBzaG9ydGN1dCBmb3IKQzw8CnJzc191cGRhdGVQZXJpb2QoSTxwZXJpb2RzdHJpbmc+KTsgcnNzX3VwZGF0ZUZyZXF1ZW5jeShJPGludD4pOwpyc3NfdXBkYXRlQmFzZShJPGJhc2U+KQo+PgoKPWN1dAoKc3ViIHVwZGF0ZVBlcmlvZCB7CiAgcmV0dXJuICRfWzBdLT57J3VwZGF0ZVBlcmlvZCd9IGlmIEBfID09IDE7CiAgIyBFbHNlIHdlJ3JlIGEgd3JpdGUgYWNjZXNzb3I6CiAgCiAgbXkoJHNlbGYsICRwZXJpb2QpID0gQF87CiAgJHBlcmlvZCBvciBDYXJwOjpjb25mZXNzKAogICAiV2hhdCBwZXJpb2Q/IHllYXJseS9tb250aGx5L3dlZWtseS9kYWlseS9ob3VybHk/Iik7CgogIGlmKCRwZXJpb2QgPX4gbS9eKHllYXJseXxtb250aGx5fHdlZWtseXxkYWlseXxob3VybHkpJC9zKSB7CiAgICAkc2VsZi0+eyd1cGRhdGVQZXJpb2QnfSA9ICRwZXJpb2Q7CiAgICAkc2VsZi0+dXBkYXRlRnJlcXVlbmN5KCRfWzJdKSBpZiBAXyA+IDI7CQogICAgJHNlbGYtPnVwZGF0ZUJhc2UoJF9bM10pIGlmIEBfID4gMzsKICAgICRzZWxmLT57J19uYW1lc3BhY2VzJ317J3N5J30gPSAkTkFNRVNQQUNFX1NZOwogICAgcmV0dXJuICRwZXJpb2Q7CiAgfSBlbHNlIHsKICAgIENhcnA6OmNvbmZlc3MoCiAgICAgIldoYXQga2luZCBvZiBwZXJpb2QgaXMgXCIkcGVyaW9kXCI/ICBVc2Ugb25lIG9mOiB5ZWFybHl8bW9udGhseXx3ZWVrbHl8ZGFpbHl8aG91cmx5Iik7CiAgfQp9CgojIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KCj1pdGVtIEM8cnNzX3VwZGF0ZUJhc2UoIEk8aXNvX2RhdGVfc3RyaW5nPiApOz4KCj1pdGVtIEM8cnNzX3VwZGF0ZUJhc2UoIEk8ZXBvY2hfdGltZT4gKTs+CgpUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldHMgdGhlIEM8c3k6dXBkYXRlQmFzZT4gZWxlbWVudCdzIHZhbHVlIHRvIHRoZQptb21lbnQgc3BlY2lmaWVkLiAgSWYgeW91IHBhc3MgaW4gYW4gZXBvY2ggdGltZSwgaXQgaXMgY29udmVydGVkIHRvCmFuIElTTyBkYXRlIHN0cmluZy4KCj1jdXQKCnN1YiB1cGRhdGVCYXNlIHsKICByZXR1cm4gJF9bMF0tPnsndXBkYXRlQmFzZSd9IGlmIEBfID09IDE7CiAgIyBFbHNlIHdlJ3JlIGEgd3JpdGUgYWNjZXNzb3I6CiAgCiAgbXkoJHNlbGYsICR0aGVuKSA9IEBfOwogIGlmKCAkdGhlbiA9fiBtL14tP1xkKyQvcyApIHsKICAgICRzZWxmLT57J3VwZGF0ZUJhc2UnfSA9ICRzZWxmLT5fZXBvY2gyaXNvZGF0ZSgkdGhlbik7CiAgfSBlbHNpZiAoICR0aGVuID1+ICAjIGJhc2ljYWxseSBJU084NjAxCiAgICAgIG08XgogICAgICAgIFxkXGRcZFxkCQkjIHllYXIKICAgICAgICAoPzoKICAgICAgICAgIC1cZFxkCQkJIyBtb250aAogICAgICAgICAgKD86CiAgICAgICAgICAgIC1cZFxkICAjIGRheQogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICBUXGRcZDpcZFxkCSMgaGg6bW0KICAgICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIDpcZFxkCQkjIHNlY29uZHMKICAgICAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgICBcLlxkKwkJIyBmcmFjdGlvbnMgb2YgYSBzZWNvbmQKICAgICAgICAgICAgICAgICk/CiAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgICAoPzoJCSMgVFogb2Zmc2V0CiAgICAgICAgICAgICAgICBaCQkjIFp1bHUKICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgKD86CQkjIG9yIGJ5IG9mZnNldDoKICAgICAgICAgICAgICAgICAgWy0rXQogICAgICAgICAgICAgICAgICBcZFxkOlxkXGQgICAgICMgaGg6bW0sIHdpdGggbGVhZGluZyAnKycgb3IgJy0nCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgKT8KICAgICAgICAgICk/CiAgICAgICAgICAKICAgICAgICApPwogICAgICAgICAjIFRoZSBtb250aCB3YXMgb3B0aW9uYWwsIGJ1dCB0aGF0CiAgICAgICAgICMgIG1ha2VzICIxOTk0IiBhbWJpZ3VvdXMgLS0gYSB5ZWFyIG9yIGFuIGVwb2NoIHRpbWU/CiAgICAgICAgICMgSSBkb3VidCBhbnlvbmUgd2FudHMgdG8gd3JpdGUgPHVwZGF0ZUJhc2U+MjAwMDwvdXBkYXRlQmFzZT4sCiAgICAgICAgICMgIGVzcCBhcyB0aGUgZGVmYXVsdCBpcyBiYXNpY2FsbHkgPT0gPHVwZGF0ZUJhc2U+MTk3MDwvdXBkYXRlQmFzZT4uCiAgICAgICAgJAogICAgICA+c3gKICApIHsKICAgICRzZWxmLT57J3VwZGF0ZUJhc2UnfSA9ICR0aGVuOwogIH0gZWxzZSB7CiAgICBDYXJwOjpjb25mZXNzKCJXaGF0IGtpbmQgb2YgdXBkYXRlQmFzZSBpcyBcIiR0aGVuXCI/Iik7CiAgfQogIHJldHVybiAkc2VsZi0+eyd1cGRhdGVCYXNlJ307Cn0KCiMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQpzdWIgX2Vwb2NoMmlzb2RhdGUgewogIG15KCRzZWxmLCAkdGltZSkgPSBAXzsKICBteShAdGltZWxpc3QpID0gZ210aW1lKCR0aW1lKTsKICArKyR0aW1lbGlzdFs0XTsKICAkdGltZWxpc3RbNV0gKz0gMTkwMDsKICByZXR1cm4gc3ByaW50ZigiJTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkKzAwOjAwIiwKICAgICAgIEB0aW1lbGlzdFsgNSwgICA0LCAgIDMgICwgMiAgICwxICBdKTsKICAgICAgIAp9CgojIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KJVBlcmlvZEFzU2Vjb25kcyA9ICgKICAnaG91cmx5JyA9PiA2MCAqIDYwLAogICdkYWlseScgID0+IDYwICogNjAgKiAyNCwKICAnd2Vla2x5JyA9PiA2MCAqIDYwICogMjQgKiA3LAopOwoKc3ViIF91cGRhdGVCYXNlX2luaXQgewogICMgV2hhdCB0byBkbz8gIFBlZyBpdCBvbiBub3cgcGx1cyBJbnRlcnZhbCwgcm91bmRlZCB1cCB0byBuZXh0IE0tbWludXRlIGludGVydmFsPwogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJG5vdyA9ICRzZWxmLT5fbm93X3JvdW5kZWRfdXA7CiAgCiAgbXkgJHBlcmlvZF90eXBlID0gJHNlbGYtPnVwZGF0ZVBlcmlvZDsKICBpZiggJHBlcmlvZF90eXBlIGVxICdtb250aGx5JyBvciAkcGVyaW9kX3R5cGUgZXEgJ3llYXJseScpIHsKICAgICRub3cgPSAkc2VsZi0+X2Vwb2NoMmlzb2RhdGUoICRub3cgKTsKICAgIGlmKCRwZXJpb2RfdHlwZSBlcSAneWVhcmx5JykgewogICAgICAkbm93ID1+ICAgICAgIHMvXi4uLi4tLzIwMDAtL3MgfHwgZGllICJTUE9SSzkzOTMxISI7ICMgc2FuaXR5CiAgICB9IGVsc2lmKCRwZXJpb2RfdHlwZSBlcSAnbW9udGhseScpIHsKICAgICAgJG5vdyA9fiBzL14uLi4uLS4uLS8yMDAwLTAxLS9zIHx8IGRpZSAiU1BPUkszNTI4NiEiOyAjIHNhbml0eQogICAgfSBlbHNlIHsKICAgICAgZGllICJTUE9SSyEhISEhOTQ4MjkwNDUiOyAjc2FuaXR5CiAgICB9CiAgICBERUJVRyA+IDFhbmQgcHJpbnQgIlVzaW5nICRub3cgYXMgdXBkYXRlQmFzZS5cbiI7CiAgfSBlbHNlIHsKICAgICMgSXQncyBhIHBsYWluIG9sJyBpbnRlcnZhbC4KICAgIERFQlVHID4gMSBhbmQgcHJpbnQgIlNsYXBwaW5nICRub3cgKCIsIGdtdGltZSgkbm93KS4gIiBpbnRvIDE5NzAuXG4iOwogICAgbXkgJGZyZXEgPSAkc2VsZi0+dXBkYXRlRnJlcXVlbmN5KCk7CiAgICBteSAkaW50ZXJ2YWxfYXNfc2Vjb25kcyA9IGludCgKICAgICAgKCRQZXJpb2RBc1NlY29uZHN7JHBlcmlvZF90eXBlfSB8fGRpZSAiU1BPUks4NDI1OCBvbiAnJHBlcmlvZF90eXBlJyEiKQogICAgICAvICRmcmVxKQogICAgOwogICAgREVCVUcgPiAxIGFuZCBwcmludAogICAgICJTbywgJGZyZXEgdGltZXMgJHBlcmlvZF90eXBlIGlzICRpbnRlcnZhbF9hc19zZWNvbmRzIHNlY29uZHMuLi5cbiI7CiAgICAkbm93ICU9ICRpbnRlcnZhbF9hc19zZWNvbmRzOwogICAgREVCVUcgPiAxIGFuZCBwcmludCAiVXNpbmcgJG5vdyAoIiwgZ210aW1lKCRub3cpLiAiIGFzIHVwZGF0ZUJhc2UuXG4iOwogIH0KICAkc2VsZi0+dXBkYXRlQmFzZSgkbm93KTsKICByZXR1cm47Cn0KCiMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX3VwZGF0ZUZyZXF1ZW5jeSggSTxpbnRlZ2VyPiApOz4KClRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgc2V0cyB0aGUgQzxzeTp1cGRhdGVGcmVxdWVuY3k+IGVsZW1lbnQncyB2YWx1ZSB0byB0aGUKdmFsdWUgc3BlY2lmaWVkLiAgVGhlIHZhbHVlIGhhcyB0byBiZSBhIG5vbnplcm8gcG9zaXRpdmUgaW50ZWdlci4KCkZvciBleGFtcGxlLCB0aGlzIG1lYW5zIHRoYXQgdGhpcyBmZWVkIHVwZGF0ZXMgYXQvYnkgdGhlIHN0YXJ0IG9mIGV2ZXJ5IGhvdXIKYW5kIDMwIG1pbnV0ZXMgcGFzdDoKCiAgcnNzX3VwZGF0ZUJhc2UoJzIwMDAtMDEtMDFUMDA6MDAtMDA6MDAnKTsKICByc3NfdXBkYXRlRnJlcXVlbmN5KDIpOwogIHJzc191cGRhdGVQZXJpb2QoJ2hvdXJseScpOyAgIyAyKmhvdXJseSBtZWFucyAidHdpY2UgYW4gaG91ciIKClJlY2FsbCB0aGF0IHRoaXMgY2FuIGFsc28gYmUgZG9uZSB3aXRoIHRoZQp0aGUgQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcj4sIEk8ZnJlcT4sIEk8YmFzZT4gKT4gc2hvcnRjdXQsIGxpa2Ugc286CgogIHJzc191cGRhdGVCYXNlKCdob3VybHknLCAyLCAnMjAwMC0wMS0wMVQwMDowMC0wMDowMCcpOwoKPWN1dAoKc3ViIHVwZGF0ZUZyZXF1ZW5jeSB7ICMgc2ltcGxlIGFjY2Vzc29yLCBwbHVzIHRoZSBpbnQoKSB0aGluZwogIGlmKEBfID4gMSkgewogICAgJF9bMF0tPnsndXBkYXRlRnJlcXVlbmN5J30gPSBpbnQoJF9bMV0pIHx8IDE7CiAgfSBlbHNlIHsKICAgICRfWzBdLT57J3VwZGF0ZUZyZXF1ZW5jeSd9CiAgfQp9CgpzdWIgX3VwZGF0ZUZyZXF1ZW5jeV9pbml0IHsgJF9bMF0tPnsndXBkYXRlRnJlcXVlbmN5J30gfHw9IDEgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgX3N5X3VwZGF0ZV9hc194bWwgewogIG15ICRzZWxmID0gJF9bMF07CiAgcmV0dXJuICcnIHVubGVzcyAkc2VsZi0+eyd1cGRhdGVQZXJpb2QnfTsKICAkc2VsZi0+X3VwZGF0ZUZyZXF1ZW5jeV9pbml0KCk7CiAgJHNlbGYtPl91cGRhdGVCYXNlX2luaXQoKTsKICByZXR1cm4gc3ByaW50ZigKCnF7PHN5OnVwZGF0ZUZyZXF1ZW5jeT4lczwvc3k6dXBkYXRlRnJlcXVlbmN5Pgo8c3k6dXBkYXRlUGVyaW9kPiVzPC9zeTp1cGRhdGVQZXJpb2Q+CjxzeTp1cGRhdGVCYXNlPiVzPC9zeTp1cGRhdGVCYXNlPgp9LAogICAgJHNlbGYtPnVwZGF0ZUZyZXF1ZW5jeSwKICAgICRzZWxmLT51cGRhdGVQZXJpb2QsCiAgICAkc2VsZi0+dXBkYXRlQmFzZSwKICApOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgQWxpYXNlczoKc3ViIHNraXBfaG91cnMgICAgICAge3NoaWZ0LT5za2lwSG91cnMoICAgICAgIEBfKX0Kc3ViIHNraXBfZGF5cyAgICAgICAge3NoaWZ0LT5za2lwRGF5cyggICAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9kYXlzICAgICAge3NoaWZ0LT51cGRhdGVEYXlzKCAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9ob3VycyAgICAge3NoaWZ0LT51cGRhdGVIb3VycyggICAgIEBfKX0Kc3ViIHVwZGF0ZV9wZXJpb2QgICAge3NoaWZ0LT51cGRhdGVQZXJpb2QoICAgIEBfKX0Kc3ViIHVwZGF0ZV9iYXNlICAgICAge3NoaWZ0LT51cGRhdGVCYXNlKCAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9mcmVxdWVuY3kge3NoaWZ0LT51cGRhdGVGcmVxdWVuY3koIEBfKX0Kc3ViIHdlYm1hc3RlciAgICAgICAge3NoaWZ0LT53ZWJNYXN0ZXIoICAgICAgIEBfKX0KCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc19yZXRlbnRpb24oSTxudW1iZXI+KT4KCklmIHlvdSBhcmUgdXNpbmcgYW4gQzxyc3NfaGlzdG9yeV9maWxlKEk8ZmlsZT4pPiwgdGhlIGhpc3RvcnkgZmlsZSB3aWxsCmFjY3JldGUgYSBsaXN0IG9mIGFsbCBVUkxzIGl0IGhhcyBzZWVuLiAgQnV0IHRvIGtlZXAgdGhpcyBmaWxlIGZyb20gcG90ZW50aWFsbHkKZ2V0dGluZyBpbW1lbnNlLCBpdGVtcyB0aGF0IGhhdmVuJ3QgYmVlbiBzZWVuIGZvciBhIHdoaWxlIGFyZSB0aHJvd24gb3V0LgpUaGUgcGVyaW9kIG9mIHRpbWUgYSBmZWVkJ3MgaXRlbXMgZ28gdW5zZWVuIGJlZm9yZSBlYWNoIGlzIGZvcmdvdHRlbiBpcwpjYWxsZWQgdGhhdCBmZWVkJ3MgQjxyZXRlbnRpb24+LCBhbmQgaXMgZXhwcmVzc2VkIGluIHNlY29uZHMuCgpUaGUgZGVmYXVsdCByZXRlbnRpb24gdmFsdWUgaXMgMzIgZGF5cyAoaS5lLiwgMzIqMjQqNjAqNjAsIHRoZSBudW1iZXIKb2Ygc2Vjb25kcyBpbiAzMiBkYXlzKS4gIElmIHlvdSB3YW50ZWQgdG8gY2hhbmdlIGl0IHRvIGp1c3QgYSB3ZWVrLAp5b3Ugd291bGQgZG8gdGhpcyB3aXRoIEM8cnNzX3JldGVudGlvbig3KjI0KjYwKjYwKT4uCgpBcyBhIHNwZWNpYWwgY2FzZSwgYSB6ZXJvIG9yIG5lZ2F0aXZlIHZhbHVlIGZvciB0aGUgcmV0ZW50aW9uIG1lYW5zCnRvIG5ldmVyIGNsZWFyIGFueXRoaW5nIGZyb20gdGhlIGhpc3RvcnkgZmlsZSwgbm8gbWF0dGVyIGhvdyBsb25nCml0IGhhcyBnb25lIHVuc2Vlbi4KCj1jdXQKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfYWRkX2NvbW1lbnQoIEk8c3RyaW5ncz4gKTs+CgpDYWxsIHRoaXMgZnVuY3Rpb24gaWYgeW91IHdhbnQgdG8gYWRkIGV4dHJhIFhNTCBjb21tZW50cyB0byB0aGlzIFJTUyBmaWxlLgpGb3IgZXhhbXBsZSwgaWYgeW91IGNhbGwgdGhpczoKCiAgICAgICAgcnNzX2FkZF9jb21tZW50KAogICAgICAgICAgIk91ciB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93aGVyZXZlci5pbnQvcnNzdG91Lmh0bWwiLAogICAgICAgICAgIkFueSBxdWVzdGlvbnM/IEFzayBqaW1teUB3aGVyZXZlci5pbnQiLAogICAgICAgICk7CgouLi50aGVuIHRoaXMgUlNTIGZlZWQgd2lsbCBjb250YWluIHRoaXMgWE1MIGZhaXJseSBlYXJseSBvbiBpbiB0aGUgZmlsZToKCiAgICAgICAgPCEtLSBPdXIgdGVybXMgb2YgdXNlOiBodHRwOi8vd2hlcmV2ZXIuaW50L3Jzc3RvdS5odG1sIC0tPgogICAgICAgIDwhLS0gQW55IHF1ZXN0aW9ucz8gQXNrIGppbW15QHdoZXJldmVyLmludCAtLT4KCj1jdXQKCnN1YiBhZGRfY29tbWVudCB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICBmb3JlYWNoIG15ICRjIChAXykgewogICAgcHVzaCBAeyAkc2VsZi0+eydfY29tbWVudHMnfSB9LCAkYwogICAgIGlmIGRlZmluZWQgJGMgYW5kIGxlbmd0aCAkYyBhbmQgJGMgPX4gbS9cUy87CiAgICAgICMgbm8gcG9pbnQgaW4gaGF2aW5nIGNvbnRlbnRsZXNzIGNvbW1lbnRzCiAgfQogIHJldHVybjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgo9aXRlbSB0aGUgYWNjZXNzb3IgQzxyc3NfY3NzKCBJPHVybD4gKT4KClRoaXMgZGVmaW5lcyB0aGUgZ2l2ZW4gVVJMIGFzIGJlaW5nIHRoZSBYTUwtQ1NTIHN0eWxlc2hlZXQgZm9yIHRoaXMgUlNTCmZlZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiLi9yc3MuY3NzIiBpZiBDPC1lICJyc3MuY3NzIj4gaXMgdHJ1ZSwgb3RoZXJ3aXNlCmlzIHRoZSB2YWx1ZSBodHRwOi8vd3d3LmludGVyZ2xhY2lhbC5jb20vcnNzL3Jzcy5jc3MKCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc194c2woIEk8dXJsPiApPgoKVGhpcyBkZWZpbmVzIHRoZSBnaXZlbiBVUkwgYXMgYmVpbmcgdGhlIFhNTC1YU0wgc3R5bGVzaGVldCBmb3IgdGhpcyBSU1MKZmVlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG5vbmUuCgo9aXRlbSBUaGUgYWNjZXNzb3JzCkM8PApyc3NfdXJsKCBJPHN0cmluZz4gKSwgcnNzX3RpdGxlKCBJPHN0cmluZz4gKSwgcnNzX2Rlc2NyaXB0aW9uKCBJPHN0cmluZz4gKQo+PgoKVGhlc2UgZGVmaW5lIHRoaXMgZmVlZCdzIFVSTCwgdGl0bGUsIGFuZCBkZXNjcmlwdGlvbi4gIFRoZXNlIGZ1bmN0aW9ucwphcmUganVzdCBmb3IgY29tcGxldGVuZXNzLCBzaW5jZSBpdCdzIHNpbXBsZXIgdG8ganVzdCBzcGVjaWZ5IGFueS9hbGwgb2YKdGhlc2UgcGFyYW1ldGVycyBpbiB0aGUgY2FsbCB0byBDPHJzc19uZXc+LgoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX3R0bCggSTxudW1iZXI+ICk+CgpUaGlzIHNldHMgdGhlIHBhcmFtZXRlciBvZiB0aGlzIFJTUyBmZWVkJ3MgQzx0dGw+IGVsZW1lbnQsIHdoaWNoCnN1Z2dlc3RzIGhvdyBsb25nIChpbiBtaW51dGVzLCBub3Qgc2Vjb25kcyEpIGFuIFJTUyByZWFkZXIgc2hvdWxkIHdhaXQgYWZ0ZXIgaXQgcG9sbHMKYSBmZWVkIHVudGlsIGl0IHBvbGxzIGl0IGFnYWluLiAgRm9yIGV4YW1wbGUsIEM8cnNzX3R0bCg5MCk+IHdvdWxkIHN1Z2dlc3QKdGhhdCBhIHJlYWRlciBzaG91bGQgbm90IHBvbGwgdGhpcyBmZWVkIG1vcmUgb2Z0ZW4gdGhhbiBldmVyeSA5MCBtaW51dGVzLgoKKFRoaXMgZWxlbWVudCBpcyBzb21ld2hhdCBvYnNvbGVzY2VudCBuZXh0IHRvIHRoZSBuZXdlciBhbmQgbW9yZQppbmZvcm1hdGl2ZSBDPHN5OnVwZGF0ZSo+IGVsZW1lbnRzLCBidXQgaXMgaW5jbHVkZWQgZm9yIGJhY2t3YXJkCmNvbXBhdGFiaWxpdHkuKQoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2FsbG93X2R1cGxpY2F0ZXMoIEk8Ym9vbGVhbj4gKT4KClRoaXMgY29udHJvbHMgd2hldGhlciBvciBub3QgZHVwbGljYXRlIGl0ZW1zIGFyZSBmaWx0ZXJlZCBvdXQgb3V0IHRoZQpmZWVkLiAgQnkgZGVmYXVsdCB0aGlzIGlzIEk8b24+LiAgTm90ZSB0aGF0IGR1cGxpY2F0ZXMgYXJlIGRldGVjdGVkIG9ubHkKYnkgdGhlaXIgVVJMLCBzbyBpZiB5b3UgY2FsbCB0aGlzOgoKICAgICAgICByc3NfaXRlbSgnaHR0cDovL2Zvby5pbnQvZG9uYXRlJywgIkdpdmUhIik7CiAgICAgICAgcnNzX2l0ZW0oJ2h0dHA6Ly9mb28uaW50L2RvbmF0ZScsICJXZSBuZWVkIG1vbmV5ISIpOwogICAgICAgIHJzc19zYXZlKCdiZWdnaW5nLnJzcycpOwoKLi4udGhlbiBvbmx5IHRoZSBmaXJzdCB3aWxsIGFwcGVhciBpbiB0aGUgZmVlZCwgc2luY2UgdGhlIHNlY29uZCBpdGVtCmhhcyBhIFVSTCB0aGF0IGlzIGFscmVhZHkgYmVpbmcgc2F2ZWQgaW4gdGhpcyBmZWVkLiAgKEhvd2V2ZXIsCkM8cnNzX2l0ZW1fY291bnQ+IGlzIHN0aWxsIDIsIGJlY2F1c2UgZmlsdGVyaW5nIG91dCBkdXBsaWNhdGVzIGlzCnNvbWV0aGluZyB0aGF0IG9ubHkgaGFwcGVucyBhcyB0aGUgZmVlZCBpcyBzYXZlZC4pCgo9aXRlbSB0aGUgYWNjZXNzb3IgQzxyc3NfZG9jcyggSTx1cmw+ICk+CgpUaGlzIHNldHMgdGhlIHZhbHVlIG9mIHRoZSBub3QtZ2VuZXJhbGx5LXVzZWZ1bCBDPGRvYz4gUlNTIGVsZW1lbnQuClRoZSBkZWZhdWx0IHZhbHVlIGlzICIuL2Fib3V0X3Jzcy5odG1sIiBpZiBDPC1lICJhYm91dF9yc3MuaHRtbCI+IGlzCnRydWUsIG90aGVyd2lzZSAiaHR0cDovL3d3dy5pbnRlcmdsYWNpYWwuY29tL3Jzcy9hYm91dC5odG1sIi4KCj1pdGVtIHRoZSBhY2Nlc3NvcnMKQzw8CnJzc19pbWFnZV91cmwoSTx1cmw+KSwgcnNzX2ltYWdlX3dpZHRoKEk8bnVtYmVyPiksCnJzc19pbWFnZV9oZWlnaHQoSTxudW1iZXI+KSwKcnNzX2ltYWdlX3RpdGxlKEk8dGV4dD4pLCByc3NfaW1hZ2VfbGluayhJPHVybD4pLApyc3NfaW1hZ2VfZGVzY3JpcHRpb24oSTx0ZXh0PikKPj4KClRoZXNlIGFyZSBmb3IgbWFudWFsbHkgc2V0dGluZyB0aGUgdmFsdWVzIG9mIHRoaXMgZmVlZCdzIGltYWdlIGVsZW1lbnQncwpzdWJlbGVtZW50czoKCiAgPGltYWdlPgogICAgICAgICAgICAgIDx1cmw+IChyc3NfaW1hZ2VfdXJsKSAgICAgICAgIDwvdXJsPgogICAgICAgICAgICA8d2lkdGg+IChyc3NfaW1hZ2Vfd2lkdGgpICAgICAgIDwvd2lkdGg+CiAgICAgICAgICAgPGhlaWdodD4gKHJzc19pbWFnZV9oZWlnaHQpICAgICAgPC9oZWlnaHQ+CiAgICAgICAgICAgIDx0aXRsZT4gKHJzc19pbWFnZV90aXRsZSkgICAgICAgPC90aXRsZT4KICAgICAgICAgICAgIDxsaW5rPiAocnNzX2ltYWdlX2xpbmspICAgICAgICA8L2xpbms+CiAgICAgIDxkZXNjcmlwdGlvbj4gKHJzc19pbWFnZV9kZXNjcmlwdGlvbikgPC9kZXNjcmlwdGlvbj4KICA8L2ltYWdlPgoKWW91IHJhcmVseSBuZWVkIHRvIGNhbGwgYW55IG9mIHRoZXNlIEM8cnNzX2ltYWdlX0k8d2hhdGV2ZXI+PiBmdW5jdGlvbnMgLS0KdXN1YWxseSBqdXN0IGNhbGxpbmcgQzxyc3NfaW1hZ2UoIEk8dXJsLCBoLCB3PiApOz4gaXMgZW5vdWdoLgoKPWN1dAoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpteSBARG9XICAgPSBxdyhTdW4gTW9uIFR1ZSBXZWQgVGh1IEZyaSBTYXQpOwpteSBATW9udGggPSBxdyhKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyk7CgpzdWIgX2RhdGVfcmZjODIyIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15IEB0aW1lbGlzdCA9IChAXyA9PSAwKSA/IGdtdGltZSA6IChAXyA9PSAxKSA/IGdtdGltZSgkX1swXSkgOiBAXzsKICAkdGltZWxpc3RbNV0gKz0gMTkwMDsKCiAgcmV0dXJuIHNwcmludGYoCiAgICAgIiVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgR01UIiwKICAgICAgJERvV1skdGltZWxpc3RbNl1dLAogICAgICAgICAgJHRpbWVsaXN0WzNdLAogICAgICAgICAgICAgICAkTW9udGhbJHRpbWVsaXN0WzRdXSwKICAgICAgICAgICAgICAgICAgICAgICBAdGltZWxpc3RbNSwgMiwxLDBdLAogICk7Cn0KCnN1YiBfY2hlY2tfYWdlIHsKICBteSgkc2VsZiwgJGZpbGVuYW1lLCAkbWF4YWdlKSA9IEBfOwogIG15ICRhZ2U7CiAgaWYoJGZpbGVuYW1lIGFuZCAkbWF4YWdlIGFuZCAkbWF4YWdlIDwgKCRhZ2UgPSAtTSAkZmlsZW5hbWUpKSB7CiAgICBDYXJwOjpjYXJwKAogICAgICBzcHJpbnRmICIlcyB3YXJuaW5nIC0gJXMgaXMgZ2V0dGluZyBvbGQgLS0gaXQgaGFzbid0IGNoYW5nZWQgaW4gJTAuMWYgZGF5cyEiLAogICAgICAgIHJlZigkc2VsZikgfHwgJHNlbGYsCiAgICAgICAgJGZpbGVuYW1lLAogICAgICAgICRhZ2UsCiAgICApOwogIH0KICByZXR1cm4gMDsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCnN1YiBfdmFyaW91c19jb21tZW50cyB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkeDsKICByZXR1cm4KICAgIGpvaW4gJycsCiAgICBtYXAgezsgJHggPSAkXzsgJHggPX4gcy8tLS9fXy9nOyAiPCEtLSAkeCAtLT5cbiI7IH0KICAgIEB7ICRzZWxmLT57J19jb21tZW50cyd9IHx8IFtdIH0KICA7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9tb2R2ZXJzaW9uX2NvbW1lbnQgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJHNlbGZjbGFzcyA9IHJlZigkc2VsZik7CiAgbXkgJHYgPSBldmFsIHsgJHNlbGZjbGFzcy0+VkVSU0lPTiB9IHx8ICRWRVJTSU9OOwogIHJldHVybiAiXG48IS0tIEdlbmVyYXRlZCB3aXRoIFBlcmwncyAkc2VsZmNsYXNzIHYkdiAtLT5cbiI7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9hY2Nlc3Nvcml6ZSB7ICAjIEEgc2ltcGxlLW1pbmRlZCBtZXRob2QtbWFrZXIKICBubyBzdHJpY3QgJ3JlZnMnOwogIGZvcmVhY2ggbXkgJGF0dHJuYW1lIChAXykgewogICAgbmV4dCBpZiAkYXR0cm5hbWUgPX4gbS86Oi87ICMgYSBoYWNrCiAgICAqe2NhbGxlcigpIC4gJzo6JyAuICRhdHRybmFtZX0gPSBzdWIgewogICAgICB1c2Ugc3RyaWN0OwogICAgICB1bmxlc3MoKEBfID09IDEgb3IgQF8gPT0gMikgYW5kIHJlZiAkX1swXSApIHsKICAgICAgICAkQ2FycDo6Q2FycExldmVsID0gMTsKICAgICAgICBDYXJwOjpjcm9haygKICAgICAgICAgIkFjY2Vzc29yIHVzYWdlOiBcJG9iai0+JGF0dHJuYW1lKCkgb3IgXCRvYmotPiRhdHRybmFtZShcJG5ld192YWx1ZSkiCiAgICAgICAgKTsKICAgICAgfQogICAgICAoQF8gPT0gMSkgPyAgJF9bMF0tPnskYXR0cm5hbWV9CiAgICAgICAgICAgICAgICA6ICgkX1swXS0+eyRhdHRybmFtZX0gPSAkX1sxXSk7CiAgICB9OwogIH0KICAjIFlhIGtub3csIHRoZXkgc2F5IGFjY2Vzc29yaWVzIG1ha2UgdGhlIGVuc2VtYmxlIQogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgeG1sZXNjIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICRvdXQgPSBqb2luICcnLCBAXzsKICAkb3V0ID1+IHM8KFteXHgyMFx4MjFceDIzXHgyNFx4MjVceDI3LVx4M2JceDNkXHgzZi1ceDdlXSk+CiAgICAgICAgICAgPCRDb21tb25FbnRzeyQxfSB8fCAoJyYjJy4ob3JkKCQxKSkuJzsnKSA+c2VnOwogIHJldHVybiAkb3V0Owp9CgpzdWIgeG1sZWxlbSB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICBteSAkZ2kgICA9IHNoaWZ0OwogIHJldHVybiAiPCRnaT4iIC4gJHNlbGYtPnhtbGVzYyhAXykgLiAiPC8kZ2k+IjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgaHRtbDJ0ZXh0IHsKCiAgIyBBIHJ1ZGltZW50YXJ5IEhUTUwgdG9rZW5pemVyLCBhZGFwdGVkIGFuZCBzaW1wbGlmaWVkCiAgIyBmcm9tIEdpc2xlIEFhcydzIEhUTUw6OlBhcnNlciB2Mi4yNS4uLgoKICBsb2NhbCAkXzsKICBteSgkc2VsZiwgQG91dCk7CiAgKCRzZWxmLCAkXykgPSBAXzsKCiAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRfOwogIHJldHVybiAkJF8gICBpZiByZWYoJF8pIGVxICdTQ0FMQVInOyAgIyBQYXNzIGEgc2NhbGFyIHJlZiB0byBieXBhc3MhCiAgcmV0dXJuICcnICAgIHVubGVzcyBsZW5ndGggICRfOwoKICBpZiggbS9eW1x4MDAtXHg3ZV0rJC9zIGFuZCAhIG0vWzw+Jl0vcykgewogICAgIyBNb3N0IGNvbW1vbiBjYXNlOiBhIHNpbXBsZSBzdHJpbmcgbmVlZGluZyBubyBIVE1MIHBhcnNpbmcuCiAgICAjIFNvIGp1c3QgY29tcGFjdCBhbmQgdHJpbSB3aGl0ZXNwYWNlLCBhbmQgbW92ZSBvbi4KICAgIHRyL1xuXHJcZlx0IC8gL3M7CiAgICBzLyAkLy9zOwogICAgcy9eIC8vczsKICAgIHJldHVybiAkXzsKICB9CiAgCiAgd2hpbGUoIGxlbmd0aCgkXykgKSB7CiAgICBpZiAoIHNAXihbXiY8XSspQEBzKSB7ICAjIEFueSBwbGFpbnRleHQKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogUGxhaW50ZXh0IHskMX1cbiI7CiAgICAgIHB1c2ggQG91dCwgJDE7CiAgICB9IGVsc2lmICggc0BeCiAgICAgICgKICAgICAgICAmXCMKICAgICAgICAoPzoKICAgICAgICAgICg/OiAjIGRlYwogICAgICAgICAgICAoWzAtOV17MSw3fSkKICAgICAgICAgICl8KD86ICMgb3IgaGV4CiAgICAgICAgICAgW3hYXShbMC05YS1mQS1GXXsxLDd9KQogICAgICAgICAgKQogICAgICAgICkKICAgICAgKQogICAgICBcYgogICAgICA7PwogICAgICBAQHN4CiAgICApIHsKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogTnVtZXJpYyBlbnQgeyQxfSIsCiAgICAgICAgIGRlZmluZWQoJDIpID8gIiAoZGVjICQyKSIgCiAgICAgICA6IGRlZmluZWQoJDMpID8gIiAoaGV4ICQzKSIgCiAgICAgICA6ICIgKHdlaXJkISkiLAogICAgICAgIlxuIjsKCiAgICAgIGlmKCAgICAgIGRlZmluZWQgJDMgYW5kIGV4aXN0cyAkV2luTGFtZUVudGl0aWVze2hleCgkMyl9ICkgewogICAgICAgICMgaXQncyBhIHdpbmxhbWUgZW50LCBpbiBoZXgKICAgICAgICBERUJVRyA+IDYgYW5kIHByaW50ICIgQ29ycmVjdGluZyB0aGF0IHRvICYjJFdpbkxhbWVFbnRpdGllc3toZXgoJDMpfTtcbiI7CiAgICAgICAgcHVzaCBAb3V0LCBcIiYjJFdpbkxhbWVFbnRpdGllc3toZXgoJDMpfTsiIDsKICAgICAgfSBlbHNpZiggZGVmaW5lZCAkMiBhbmQgZXhpc3RzICRXaW5MYW1lRW50aXRpZXN7MCArICQyfSApIHsKICAgICAgICAjIGl0J3MgYSB3aW5sYW1lIGVudCwgaW4gZGVjaW1hbAogICAgICAgIERFQlVHID4gNiBhbmQgcHJpbnQgIiBDb3JyZWN0aW5nIHRoYXQgdG8gJiMkV2luTGFtZUVudGl0aWVzezAgKyAkMn07XG4iOwogICAgICAgIHB1c2ggQG91dCwgXCImIyRXaW5MYW1lRW50aXRpZXN7MCArICQyfTsiICA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgIyBpdCdzIGEgbm9ybWFsIGVudGl0eQogICAgICAgIERFQlVHID4gNiBhbmQgcHJpbnQgIiBQYXNzaW5nIGl0IHRocnUgYXMgXCIkMTtcIlxuIjsKICAgICAgICBwdXNoIEBvdXQsIFwiJDE7IjsKICAgICAgfQogICAgICAKCiAgICB9IGVsc2lmICggc0BeJihbQS1aYS16XVtBLVphLXowLTldezAsMTB9KVxiKDs/KUBAcykgewoKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogTmFtZWQgZW50aXR5IHskMX1cbiI7CiAgICAgIGlmKGV4aXN0cyAkRW50aXRpZXN7JDF9KSB7CiAgICAgICAgcHVzaCBAb3V0LCBcICRFbnRpdGllc3skMX07CiAgICAgIH0gZWxzaWYoZXhpc3RzICRFbnRpdGllc3sgdWNmaXJzdChsYygkMSkpIH0pIHsKICAgICAgICBERUJVRyA+IDYgYW5kIHByaW50ICI6OjogVHJlYXRpbmcgYXMgaWYgaXQgd2VyZSAmIiwKICAgICAgICAgIHVjZmlyc3QobGMoJDEpKSwgIjtcbiI7CiAgICAgICAgcHVzaCBAb3V0LCBcICRFbnRpdGllc3sgdWNmaXJzdChsYygkMSkpIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgREVCVUcgPiA2IGFuZCBwcmludCAiOjo6IFVucmVzb2x2YWJsZSEgIFRyZWF0aW5nIGFzIHBsYWludGV4dFxuIjsKICAgICAgICBwdXNoIEBvdXQsICImJDEiIC4gKCQyIHx8ICcnKTsKICAgICAgfQoKCiAgICAjIFRoaW5ncyB3ZSBqdXN0IGlnbm9yZToKICAgIH0gZWxzaWYoIHNAXig8IVxzKi0tLio/LS1ccyo+KUBAcyApIHsgICMgIk5ldHNjYXBlIiBjb21tZW50cwogICAgICBERUJVRyA+IDUgYW5kIHByaW50ICI6OiBTaW1wbGUgY29tbWVudCB7JDF9XG4iOwogICAgfSBlbHNpZiggc0BeKDxbIT9dW14+XSo+KUBAcyApIHsgIyBkb2N0eXBlLCBQSSwgb3IgYSB3ZWlyZCBjb21tZW50CiAgICAgIERFQlVHID4gNSBhbmQgcHJpbnQgIjo6IERpcmVjdGl2ZS9QSSB7JDF9XG4iOwogICAgfSBlbHNpZiggc0BePC8/KFthLXpBLVpdW2EtekEtWjAtOVwuXDpcX1wtXXswLDcyfSlccyovPz5AQCApIHsKICAgICAgIyBFbmQtdGFnLCBvciBhIHNpbXBsZSBzdGFydC10YWcKICAgICAgcHVzaCBAb3V0LCAnICcgaWYgJElzQmxvY2tNYXJrdXB7bGMgJDF9OwogICAgICBERUJVRyA+IDUgYW5kIHByaW50ICI6OiBTaW1wbGUgdGFnIHskMX0iLAogICAgICAgICRJc0Jsb2NrTWFya3Vwe2xjICQxfSA/ICIgK2JyZWFreSI6ICgpLCAiXG4iOwoKICAgIH0gZWxzaWYgKCAgICAjIGNvbXBsZXggc3RhcnQtdGFnCiAgICAgIHNACiAgICAgICBeCiAgICAgICAoCiAgICAgICAgPAogICAgICAgIChbYS16QS1aXVthLXpBLVowLTlcLlw6XF9cLV17MCw3Mn0pICAjIHRoZSBHLkkuCiAgICAgICAgKD86CiAgICAgICAgICBccysKICAgICAgICAgIFthLXpBLVpdW2EtekEtWjAtOVwuXDpcX1wtXXswLDcyfQogICAgICAgICAgKD86ICAjIEF0dHJpYnV0ZXMgY2FuIGJlIHZhbHVlbGVzcyEKICAgICAgICAgICAgXHMqCiAgICAgICAgICAgID0KICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICg/OiAgICAgICAgICAgICAjIEF0dHJpYnV0ZSB2YWx1ZS4uLgogICAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgIlteIl0qIiAgICAgICAjICJmb28gYmFyIgogICAgICAgICAgICAgICl8KD86CiAgICAgICAgICAgICAgICAnW14nXSonICAgICAgICMgJ2ZvbyBiYXInCiAgICAgICAgICAgICAgKXwoPzoKICAgICAgICAgICAgICAgIFtePD5cblxyXHQgXXswLDkwfSAjIGZvb2JhcmJhegogICAgICAgICAgICAgICAgICAjIDkwIGlzIG15IHNhbmUgbGVuZ3RoLWxpbWl0IG9uIHVucXVvdGVkIGF0dHJ2YWx1ZXMKICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICk/CiAgICAgICAgKSogICAjIGFueSBudWJtZXIgb2YgYXR0cmlicwogICAgICAgIFxzKiAgIyBvcHRpb25hbCBlbmRpbmcgd2hpdGVzcGFjZQogICAgICAgIC8/ICAgIyBvcHRpb25hbCBlbXB0aW5lc3MgZmxhZwogICAgICAgID4KICAgICAgICkKICAgICAgIEBAeAogICAgKSB7CiAgICAgIHB1c2ggQG91dCwgJyAnIGlmICRJc0Jsb2NrTWFya3Vwe2xjICQyfTsKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogQ29tcGxleCBzdGFydC10YWcgeyQyfSIsCiAgICAgICAgICAkSXNCbG9ja01hcmt1cHtsYyAkMn0gPyAiICticmVha3kiOiAoKSwgIlxuIjsKICAgICAgCiAgICAjIEdldHMgY2FsbGVkIG9ubHkgb24gYWJlcnJhbnQgaW5wdXQsIEkgdGhpbms6CiAgICB9IGVsc2lmKCBzQF4oLilAQHMgKSB7CiAgICAgIERFQlVHID4gNSBhbmQgcHJpbnQgIjo6IExhc3QtcmVzb3J0IHNpbmdsZSBjaGFyYWN0ZXIgeyQxfVxuIjsKICAgICAgcHVzaCBAb3V0LCAkMTsKICAgIAogICAgfSBlbHNlIHsKICAgICAgZGllICJJTVBPU1NJQkxFIHskX31cbiAhISEgIjsgIyBzYW5pdHktY2hlY2sKICAgIH0KICB9CiAgCiAgZm9yZWFjaCBteSAkeCAoQG91dCkgewogICAgaWYoIHJlZiAkeCApIHsKICAgICAgJHggPSAkJHg7CiAgICB9IGVsc2UgeyAgIyBkbyBuZWNlc3NhcnkgZXNjYXBpbmcKICAgICAgJHggPX4gdHIvXG5cclxmXHQgLyAvczsgIyBzbWFzaCB3aGl0ZXNwYWNlCiAgICAgICR4ID0gJHNlbGYtPnhtbGVzYygkeCkgdW5sZXNzICR4ID1+IG0vXlthLXpBLVowLTlfJyIsXC4gXSokL3MKICAgICAgICMgRG9kZ2UgY2FsbGluZyBvbiB0aGUgbW9zdCBjb21tb24gY2FzZSwgaS5lLiwgdGV4dAogICAgICAgIyAgdGhhdCByZWFsbHkgZG9lc24ndCBuZWVkIGFueSBleGN1c2UgYXQgYWxsLgogICAgfQogIH0KCiAgcmV0dXJuIGpvaW4gJycsIEBvdXQ7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKJE1JTUVfVHlwZSA9ICdhcHBsaWNhdGlvbi9yc3MreG1sJzsKCiVXaW5MYW1lRW50aXRpZXMgPSAoCiBkbyB7OwogICBteSAkYyA9IDB4ODA7CiAgIG1hcCB7OyAkYysrID0+IChoZXgoJF8pIHx8IDB4MDA3ZSkgfQogICBxdygKMjBhYyAwMDAwIDIwMWEgMDE5MiAyMDFlIDIwMjYgMjAyMCAyMDIxIDAyYzYgMjAzMCAwMTYwIDIwMzkgMDE1MiAwMCAwMTdkIDAwMDAKMDAwMCAyMDE4IDIwMTkgMjAxYyAyMDFkIDIwMjIgMjAxMyAyMDE0IDAyZGMgMjEyMiAwMTYxIDIwM2EgMDE1MyAwMCAwMTdlIDAxNzgKKSMgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICB8Cn0pOwoKX2luaXRfY29tbW9uX2VudHMoKTsKCnN1YiBfaW5pdF9jb21tb25fZW50cyB7CiAgJUNvbW1vbkVudHMgPSAoCiAgICAnJicgPT4gJyZhbXA7JywKICAgICc8JyA9PiAnJmx0OycsCiAgICAnPicgPT4gJyZndDsnLAogICAgJyInID0+ICcmcXVvdDsnLAogICAgKCBtYXAgezsgY2hyKCRfKSA9PiAiICIgfSAwIC4uIDMxICksCiAgICAoIG1hcCB7OyBjaHIoJF8pID0+ICImIyRXaW5MYW1lRW50aXRpZXN7JF99OyIgfSBrZXlzICVXaW5MYW1lRW50aXRpZXMgKSwKICApOwogIHJldHVybjsKfQoKJUVudGl0aWVzID0gKAogIyBIVE1MIGVudGl0aWVzIGdvdHRlbiBmcm9tIHRoZSBIVE1MIERURHMKIAogJ0FhY3V0ZScgPT4gJyYjeGMxOycsICAgICdhYWN1dGUnID0+ICcmI3hlMTsnLCAgICdBY2lyYycgPT4gJyYjeGMyOycsCiAnYWNpcmMnID0+ICcmI3hlMjsnLCAgICAgJ2FjdXRlJyA9PiAnJiN4YjQ7JywgICAgJ0FFbGlnJyA9PiAnJiN4YzY7JywKICdhZWxpZycgPT4gJyYjeGU2OycsICAgICAnQWdyYXZlJyA9PiAnJiN4YzA7JywgICAnYWdyYXZlJyA9PiAnJiN4ZTA7JywKICdhbGVmc3ltJyA9PiAnJiN4MjEzNTsnLCAnQWxwaGEnID0+ICcmI3gzOTE7JywgICAnYWxwaGEnID0+ICcmI3gzYjE7JywKICdhbXAnID0+ICcmI3gyNjsnLCAgICAgICAnYW5kJyA9PiAnJiN4MjIyNzsnLCAgICAnYW5nJyA9PiAnJiN4MjIyMDsnLAogJ2Fwb3MnID0+ICcmI3gyNzsnLCAgICAgICdBcmluZycgPT4gJyYjeGM1OycsICAgICdhcmluZycgPT4gJyYjeGU1OycsCiAnYXN5bXAnID0+ICcmI3gyMjQ4OycsICAgJ0F0aWxkZScgPT4gJyYjeGMzOycsICAgJ2F0aWxkZScgPT4gJyYjeGUzOycsCiAnQXVtbCcgPT4gJyYjeGM0OycsICAgICAgJ2F1bWwnID0+ICcmI3hlNDsnLCAgICAgJ2JkcXVvJyA9PiAnJiN4MjAxZTsnLAogJ0JldGEnID0+ICcmI3gzOTI7JywgICAgICdiZXRhJyA9PiAnJiN4M2IyOycsICAgICdicnZiYXInID0+ICcmI3hhNjsnLAogJ2J1bGwnID0+ICcmI3gyMDIyOycsICAgICdjYXAnID0+ICcmI3gyMjI5OycsICAgICdDY2VkaWwnID0+ICcmI3hjNzsnLAogJ2NjZWRpbCcgPT4gJyYjeGU3OycsICAgICdjZWRpbCcgPT4gJyYjeGI4OycsICAgICdjZW50JyA9PiAnJiN4YTI7JywKICdDaGknID0+ICcmI3gzYTc7JywgICAgICAnY2hpJyA9PiAnJiN4M2M3OycsICAgICAnY2lyYycgPT4gJyYjeDJjNjsnLAogJ2NsdWJzJyA9PiAnJiN4MjY2MzsnLCAgICdjb25nJyA9PiAnJiN4MjI0NTsnLCAgICdjb3B5JyA9PiAnJiN4YTk7JywKICdjcmFycicgPT4gJyYjeDIxYjU7JywgICAnY3VwJyA9PiAnJiN4MjIyYTsnLCAgICAnY3VycmVuJyA9PiAnJiN4YTQ7JywKICdkYWdnZXInID0+ICcmI3gyMDIwOycsICAnRGFnZ2VyJyA9PiAnJiN4MjAyMTsnLCAnZGFycicgPT4gJyYjeDIxOTM7JywKICdkQXJyJyA9PiAnJiN4MjFkMzsnLCAgICAnZGVnJyA9PiAnJiN4YjA7JywgICAgICAnRGVsdGEnID0+ICcmI3gzOTQ7JywKICdkZWx0YScgPT4gJyYjeDNiNDsnLCAgICAnZGlhbXMnID0+ICcmI3gyNjY2OycsICAnZGl2aWRlJyA9PiAnJiN4Zjc7JywKICdFYWN1dGUnID0+ICcmI3hjOTsnLCAgICAnZWFjdXRlJyA9PiAnJiN4ZTk7JywgICAnRWNpcmMnID0+ICcmI3hjYTsnLAogJ2VjaXJjJyA9PiAnJiN4ZWE7JywgICAgICdFZ3JhdmUnID0+ICcmI3hjODsnLCAgICdlZ3JhdmUnID0+ICcmI3hlODsnLAogJ2VtcHR5JyA9PiAnJiN4MjIwNTsnLCAgICdlbXNwJyA9PiAnJiN4MjAwMzsnLCAgICdlbnNwJyA9PiAnJiN4MjAwMjsnLAogJ0Vwc2lsb24nID0+ICcmI3gzOTU7JywgICdlcHNpbG9uJyA9PiAnJiN4M2I1OycsICdlcXVpdicgPT4gJyYjeDIyNjE7JywKICdFdGEnID0+ICcmI3gzOTc7JywgICAgICAnZXRhJyA9PiAnJiN4M2I3OycsICAgICAnRVRIJyA9PiAnJiN4ZDA7JywKICdldGgnID0+ICcmI3hmMDsnLCAgICAgICAnRXVtbCcgPT4gJyYjeGNiOycsICAgICAnZXVtbCcgPT4gJyYjeGViOycsCiAnZXVybycgPT4gJyYjeDIwYWM7JywgICAgJ2V4aXN0JyA9PiAnJiN4MjIwMzsnLCAgJ2Zub2YnID0+ICcmI3gxOTI7JywKICdmb3JhbGwnID0+ICcmI3gyMjAwOycsICAnZnJhYzEyJyA9PiAnJiN4YmQ7JywgICAnZnJhYzE0JyA9PiAnJiN4YmM7JywKICdmcmFjMzQnID0+ICcmI3hiZTsnLCAgICAnZnJhc2wnID0+ICcmI3gyMDQ0OycsICAnR2FtbWEnID0+ICcmI3gzOTM7JywKICdnYW1tYScgPT4gJyYjeDNiMzsnLCAgICAnZ2UnID0+ICcmI3gyMjY1OycsICAgICAnZ3QnID0+ICcmI3gzZTsnLAogJ2hhcnInID0+ICcmI3gyMTk0OycsICAgICdoQXJyJyA9PiAnJiN4MjFkNDsnLCAgICdoZWFydHMnID0+ICcmI3gyNjY1OycsCiAnaGVsbGlwJyA9PiAnJiN4MjAyNjsnLCAgJ0lhY3V0ZScgPT4gJyYjeGNkOycsICAgJ2lhY3V0ZScgPT4gJyYjeGVkOycsCiAnSWNpcmMnID0+ICcmI3hjZTsnLCAgICAgJ2ljaXJjJyA9PiAnJiN4ZWU7JywgICAgJ2lleGNsJyA9PiAnJiN4YTE7JywKICdJZ3JhdmUnID0+ICcmI3hjYzsnLCAgICAnaWdyYXZlJyA9PiAnJiN4ZWM7JywgICAnaW1hZ2UnID0+ICcmI3gyMTExOycsCiAnaW5maW4nID0+ICcmI3gyMjFlOycsICAgJ2ludCcgPT4gJyYjeDIyMmI7JywgICAgJ0lvdGEnID0+ICcmI3gzOTk7JywKICdpb3RhJyA9PiAnJiN4M2I5OycsICAgICAnaXF1ZXN0JyA9PiAnJiN4YmY7JywgICAnaXNpbicgPT4gJyYjeDIyMDg7JywKICdJdW1sJyA9PiAnJiN4Y2Y7JywgICAgICAnaXVtbCcgPT4gJyYjeGVmOycsICAgICAnS2FwcGEnID0+ICcmI3gzOWE7JywKICdrYXBwYScgPT4gJyYjeDNiYTsnLCAgICAnTGFtYmRhJyA9PiAnJiN4MzliOycsICAnbGFtYmRhJyA9PiAnJiN4M2JiOycsCiAnbGFuZycgPT4gJyYjeDIzMjk7JywgICAgJ2xhcXVvJyA9PiAnJiN4YWI7JywgICAgJ2xhcnInID0+ICcmI3gyMTkwOycsCiAnbEFycicgPT4gJyYjeDIxZDA7JywgICAgJ2xjZWlsJyA9PiAnJiN4MjMwODsnLCAgJ2xkcXVvJyA9PiAnJiN4MjAxYzsnLAogJ2xlJyA9PiAnJiN4MjI2NDsnLCAgICAgICdsZmxvb3InID0+ICcmI3gyMzBhOycsICdsb3dhc3QnID0+ICcmI3gyMjE3OycsCiAnbG96JyA9PiAnJiN4MjVjYTsnLCAgICAgJ2xybScgPT4gJyYjeDIwMGU7JywgICAgJ2xzYXF1bycgPT4gJyYjeDIwMzk7JywKICdsc3F1bycgPT4gJyYjeDIwMTg7JywgICAnbHQnID0+ICcmI3gzYzsnLCAgICAgICAnbWFjcicgPT4gJyYjeGFmOycsCiAnbWRhc2gnID0+ICcmI3gyMDE0OycsICAgJ21pY3JvJyA9PiAnJiN4YjU7JywgICAgJ21pZGRvdCcgPT4gJyYjeGI3OycsCiAnbWludXMnID0+ICcmI3gyMjEyOycsICAgJ011JyA9PiAnJiN4MzljOycsICAgICAgJ211JyA9PiAnJiN4M2JjOycsCiAnbmFibGEnID0+ICcmI3gyMjA3OycsICAgJ25ic3AnID0+ICcmI3hhMDsnLCAgICAgJ25kYXNoJyA9PiAnJiN4MjAxMzsnLAogJ25lJyA9PiAnJiN4MjI2MDsnLCAgICAgICduaScgPT4gJyYjeDIyMGI7JywgICAgICdub3QnID0+ICcmI3hhYzsnLAogJ25vdGluJyA9PiAnJiN4MjIwOTsnLCAgICduc3ViJyA9PiAnJiN4MjI4NDsnLCAgICdOdGlsZGUnID0+ICcmI3hkMTsnLAogJ250aWxkZScgPT4gJyYjeGYxOycsICAgICdOdScgPT4gJyYjeDM5ZDsnLCAgICAgICdudScgPT4gJyYjeDNiZDsnLAogJ09hY3V0ZScgPT4gJyYjeGQzOycsICAgICdvYWN1dGUnID0+ICcmI3hmMzsnLCAgICdPY2lyYycgPT4gJyYjeGQ0OycsCiAnb2NpcmMnID0+ICcmI3hmNDsnLCAgICAgJ09FbGlnJyA9PiAnJiN4MTUyOycsICAgJ29lbGlnJyA9PiAnJiN4MTUzOycsCiAnT2dyYXZlJyA9PiAnJiN4ZDI7JywgICAgJ29ncmF2ZScgPT4gJyYjeGYyOycsICAgJ29saW5lJyA9PiAnJiN4MjAzZTsnLAogJ09tZWdhJyA9PiAnJiN4M2E5OycsICAgICdvbWVnYScgPT4gJyYjeDNjOTsnLCAgICdPbWljcm9uJyA9PiAnJiN4MzlmOycsCiAnb21pY3JvbicgPT4gJyYjeDNiZjsnLCAgJ29wbHVzJyA9PiAnJiN4MjI5NTsnLCAgJ29yJyA9PiAnJiN4MjIyODsnLAogJ29yZGYnID0+ICcmI3hhYTsnLCAgICAgICdvcmRtJyA9PiAnJiN4YmE7JywgICAgICdPc2xhc2gnID0+ICcmI3hkODsnLAogJ29zbGFzaCcgPT4gJyYjeGY4OycsICAgICdPdGlsZGUnID0+ICcmI3hkNTsnLCAgICdvdGlsZGUnID0+ICcmI3hmNTsnLAogJ290aW1lcycgPT4gJyYjeDIyOTc7JywgICdPdW1sJyA9PiAnJiN4ZDY7JywgICAgICdvdW1sJyA9PiAnJiN4ZjY7JywKICdwYXJhJyA9PiAnJiN4YjY7JywgICAgICAncGFydCcgPT4gJyYjeDIyMDI7JywgICAncGVybWlsJyA9PiAnJiN4MjAzMDsnLAogJ3BlcnAnID0+ICcmI3gyMmE1OycsICAgICdQaGknID0+ICcmI3gzYTY7JywgICAgICdwaGknID0+ICcmI3gzYzY7JywKICdQaScgPT4gJyYjeDNhMDsnLCAgICAgICAncGknID0+ICcmI3gzYzA7JywgICAgICAncGl2JyA9PiAnJiN4M2Q2OycsCiAncGx1c21uJyA9PiAnJiN4YjE7JywgICAgJ3BvdW5kJyA9PiAnJiN4YTM7JywgICAgJ3ByaW1lJyA9PiAnJiN4MjAzMjsnLAogJ1ByaW1lJyA9PiAnJiN4MjAzMzsnLCAgICdwcm9kJyA9PiAnJiN4MjIwZjsnLCAgICdwcm9wJyA9PiAnJiN4MjIxZDsnLAogJ1BzaScgPT4gJyYjeDNhODsnLCAgICAgICdwc2knID0+ICcmI3gzYzg7JywgICAgICdxdW90JyA9PiAnJiN4MjI7JywKICdyYWRpYycgPT4gJyYjeDIyMWE7JywgICAncmFuZycgPT4gJyYjeDIzMmE7JywgICAncmFxdW8nID0+ICcmI3hiYjsnLAogJ3JhcnInID0+ICcmI3gyMTkyOycsICAgICdyQXJyJyA9PiAnJiN4MjFkMjsnLCAgICdyY2VpbCcgPT4gJyYjeDIzMDk7JywKICdyZHF1bycgPT4gJyYjeDIwMWQ7JywgICAncmVhbCcgPT4gJyYjeDIxMWM7JywgICAncmVnJyA9PiAnJiN4YWU7JywKICdyZmxvb3InID0+ICcmI3gyMzBiOycsICAnUmhvJyA9PiAnJiN4M2ExOycsICAgICAncmhvJyA9PiAnJiN4M2MxOycsCiAncmxtJyA9PiAnJiN4MjAwZjsnLCAgICAgJ3JzYXF1bycgPT4gJyYjeDIwM2E7JywgJ3JzcXVvJyA9PiAnJiN4MjAxOTsnLAogJ3NicXVvJyA9PiAnJiN4MjAxYTsnLCAgICdTY2Fyb24nID0+ICcmI3gxNjA7JywgICdzY2Fyb24nID0+ICcmI3gxNjE7JywKICdzZG90JyA9PiAnJiN4MjJjNTsnLCAgICAnc2VjdCcgPT4gJyYjeGE3OycsICAgICAnc2h5JyA9PiAnJiN4YWQ7JywKICdTaWdtYScgPT4gJyYjeDNhMzsnLCAgICAnc2lnbWEnID0+ICcmI3gzYzM7JywgICAnc2lnbWFmJyA9PiAnJiN4M2MyOycsCiAnc2ltJyA9PiAnJiN4MjIzYzsnLCAgICAgJ3NwYWRlcycgPT4gJyYjeDI2NjA7JywgJ3N1YicgPT4gJyYjeDIyODI7JywKICdzdWJlJyA9PiAnJiN4MjI4NjsnLCAgICAnc3VtJyA9PiAnJiN4MjIxMTsnLCAgICAnc3VwJyA9PiAnJiN4MjI4MzsnLAogJ3N1cDEnID0+ICcmI3hiOTsnLCAgICAgICdzdXAyJyA9PiAnJiN4YjI7JywgICAgICdzdXAzJyA9PiAnJiN4YjM7JywKICdzdXBlJyA9PiAnJiN4MjI4NzsnLCAgICAnc3psaWcnID0+ICcmI3hkZjsnLCAgICAnVGF1JyA9PiAnJiN4M2E0OycsCiAndGF1JyA9PiAnJiN4M2M0OycsICAgICAgJ3RoZXJlNCcgPT4gJyYjeDIyMzQ7JywgJ1RoZXRhJyA9PiAnJiN4Mzk4OycsCiAndGhldGEnID0+ICcmI3gzYjg7JywgICAgJ3RoZXRhc3ltJyA9PiAnJiN4M2QxOycsJ3RoaW5zcCcgPT4gJyYjeDIwMDk7JywKICdUSE9STicgPT4gJyYjeGRlOycsICAgICAndGhvcm4nID0+ICcmI3hmZTsnLCAgICAndGlsZGUnID0+ICcmI3gyZGM7JywKICd0aW1lcycgPT4gJyYjeGQ3OycsICAgICAndHJhZGUnID0+ICcmI3gyMTIyOycsICAnVWFjdXRlJyA9PiAnJiN4ZGE7JywKICd1YWN1dGUnID0+ICcmI3hmYTsnLCAgICAndWFycicgPT4gJyYjeDIxOTE7JywgICAndUFycicgPT4gJyYjeDIxZDE7JywKICdVY2lyYycgPT4gJyYjeGRiOycsICAgICAndWNpcmMnID0+ICcmI3hmYjsnLCAgICAnVWdyYXZlJyA9PiAnJiN4ZDk7JywKICd1Z3JhdmUnID0+ICcmI3hmOTsnLCAgICAndW1sJyA9PiAnJiN4YTg7JywgICAgICAndXBzaWgnID0+ICcmI3gzZDI7JywKICdVcHNpbG9uJyA9PiAnJiN4M2E1OycsICAndXBzaWxvbicgPT4gJyYjeDNjNTsnLCAnVXVtbCcgPT4gJyYjeGRjOycsCiAndXVtbCcgPT4gJyYjeGZjOycsICAgICAgJ3dlaWVycCcgPT4gJyYjeDIxMTg7JywgJ1hpJyA9PiAnJiN4MzllOycsCiAneGknID0+ICcmI3gzYmU7JywgICAgICAgJ1lhY3V0ZScgPT4gJyYjeGRkOycsICAgJ3lhY3V0ZScgPT4gJyYjeGZkOycsCiAneWVuJyA9PiAnJiN4YTU7JywgICAgICAgJ3l1bWwnID0+ICcmI3hmZjsnLCAgICAgJ1l1bWwnID0+ICcmI3gxNzg7JywKICdaZXRhJyA9PiAnJiN4Mzk2OycsICAgICAnemV0YScgPT4gJyYjeDNiNjsnLCAgICAnendqJyA9PiAnJiN4MjAwZDsnLAogJ3p3bmonID0+ICcmI3gyMDBjOycsCik7Cgpmb3JlYWNoIG15ICR0YWduYW1lICggcXd7CiBicgogYWRkcmVzcyBhcHBsZXQgYXJlYSBiYXNlIGJnc291bmQgYmxvY2txdW90ZSBib2R5IGJ1dHRvbiBjYXB0aW9uIGNlbnRlciBjb2wKIGNvbGdyb3VwIGRkIGRlbCBkaXIgZGl2IGRsIGR0IGZpZWxkc2V0IGZvcm0gZnJhbWUgZnJhbWVzZXQgaDEgaDIgaDMgaDQgaDUKIGg2IGhlYWQgaHIgaHRtbCBpZnJhbWUgaWxheWVyIGlucHV0IGlucyBpc2luZGV4IGxhYmVsIGxheWVyIGxlZ2VuZCBsaSBsaW5rCiBsaXN0aW5nIG1hcCBtZW51IG1ldGEgbXVsdGljb2wgbm9mcmFtZXMgbm9sYXllciBub3NjcmlwdCBvYmplY3Qgb2wKIG9wdGdyb3VwIG9wdGlvbiBwIHBhcmFtIHBsYWludGV4dCBwcmUgc2NyaXB0IHNlbGVjdCBzdHlsZSB0YWJsZSB0Ym9keSB0ZAogdGV4dGFyZWEgdGZvb3QgdGggdGhlYWQgdGl0bGUgdHIgdWwgeG1wCn0pIHsgJElzQmxvY2tNYXJrdXB7JHRhZ25hbWV9ID0gMSB1bmxlc3MgZXhpc3RzICRJc0Jsb2NrTWFya3VweyR0YWduYW1lfSB9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIyBOb3cgdGhlIGZ1bmN0aW9uIGdlbmVyYXRvcnM6CkBFWFBPUlQgPSAoICdnZXRfdXJsJyApOwoKJEVYUE9SVF9UQUdTeydmdW5jdGlvbnMnfSA9IFxARVhQT1JUOyAgIyBqdXN0IGZvciBteSBvd24gYmFja3dhcmQgY29tcGF0Cgpmb3JlYWNoIG15ICRtZXRob2QgKAogIGRvIHsKICAgIG5vIHN0cmljdCAncmVmcyc7CiAgICBteSAldG9faGlkZTsKICAgIEB0b19oaWRle0BIaWRpZXN9ID0gKCk7CiAgICBzb3J0CiAgICAgIGdyZXAgIWV4aXN0cyAkdG9faGlkZXskX30gJiYgIW0vXnJzc18vcwogICAgICAgICYmIG0vXlthLXpdW19BLVphLXowLTldKyQvcyAmJiBkZWZpbmVkICZ7IlhNTDo6UlNTOjpTaW1wbGVHZW46OiRfIn0sCiAgICAgICAga2V5cyAlWE1MOjpSU1M6OlNpbXBsZUdlbjo6CiAgfQopIHsKICBteSAkZnVuY3Rpb24gPSAicnNzXyRtZXRob2QiOwogIERFQlVHID4gMjAgYW5kIHByaW50ICIkbWV0aG9kID0+ICRmdW5jdGlvblxuIjsKICBwdXNoIEBFWFBPUlQsICRmdW5jdGlvbjsKICBubyBzdHJpY3QgJ3JlZnMnOwogIHVubGVzcyggZGVmaW5lZCAmeyRmdW5jdGlvbn0gKSB7CiAgICBERUJVRyA+IDIwIGFuZCBwcmludCAiIERlZmluaW5nICRmdW5jdGlvbiA9PiAkZnVuY3Rpb25cbiI7CiAgICAqeyRmdW5jdGlvbn0gPSBzdWIgewogICAgICB1c2Ugc3RyaWN0ICdyZWZzJzsKICAgICAgdW5zaGlmdCBAXywgKCRSU1Nfb2JqIHx8PSBYTUw6OlJTUzo6U2ltcGxlR2VuOjotPm5ldyk7CiAgICAgIGdvdG8gJnsKICAgICAgICAkX1swXS0+Y2FuKCRtZXRob2QpCiAgICAgICAgfHwgZGllICJXaGVyZSdzICRtZXRob2QgZm9yICRfWzBdPyEiCiAgICAgICAgICAjIGluc2FuZSBlcnJvciwgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHNvbWVib2R5CiAgICAgICAgICAjIGdvZXMgdW5kZWZpbmluZyBleGlzdGluZyBtZXRob2RzIQogICAgICB9OwogICAgfTsKICB9Cn0KCnN1YiByc3NfbmV3IHsgJFJTU19vYmogPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoQF8pIH0KREVCVUcgPiAyMCBhbmQgcHJpbnQgIkRvbmUgY29tcGlsaW5nICIsIF9fUEFDS0FHRV9fLCAiLlxuIjsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxOwpfX0VORF9fCgo9YmFjawoKPWhlYWQxIFJTUyBWRVJTSU9OCgpSU1MgZmVlZHMgZW1pdHRlZCBieSB0aGlzIG1vZHVsZSBhcmUgYmFzaWNhbGx5IGFjY29yZGluZyB0byB2MC45MiBSU1MsCndpdGggYSB2ZXJ5IGZldyBleHRlbnNpb25zIGZyb20gdjIuMCBSU1MuICBUaGV5IGFyZSBub3QgUkRGIGZpbGVzLgoKPWhlYWQxIFNFRSBBTFNPCgpMPFhNTDo6UlNTPgoKTDxodHRwOi8vbXkubmV0c2NhcGUuY29tL3B1Ymxpc2gvZm9ybWF0cy9yc3MtMC45MS5kdGQ+CgpMPGh0dHA6Ly9ibG9ncy5sYXcuaGFydmFyZC5lZHUvdGVjaC9yc3M+CgpMPGh0dHA6Ly9kaXJlY3RvcnkuZ29vZ2xlLmNvbS9Ub3AvUmVmZXJlbmNlL0xpYnJhcmllcy9MaWJyYXJ5X2FuZF9JbmZvcm1hdGlvbl9TY2llbmNlL1RlY2huaWNhbF9TZXJ2aWNlcy9DYXRhbG9ndWluZy9NZXRhZGF0YS9SREYvQXBwbGljYXRpb25zL1JTUy9TcGVjaWZpY2F0aW9ucy8+CgpMPGh0dHA6Ly9mZWVkdmFsaWRhdG9yLm9yZy8+CgpZb3UgbWlnaHQgYWxzbyBsaWtlIG15IGJvb2sgSTxQZXJsIGFuZCBMV1A+LCB3aGljaCBkaXNjdXNzZXMgdGhlIG1hbnkKc2NyZWVuLXNjcmFwaW5nIHRlY2huaXF1ZXMgdGhhdCB5b3Ugd291bGQgdXNlIGZvciBleHRyYWN0aW5nIGRhdGEgZnJvbQpIVE1MIHRvIG1ha2UgaW50byBSU1MgZmVlZHM6Cgo9b3ZlcgoKPWl0ZW0gTDxodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvcGVybGx3cC8+Cgo9aXRlbSBMPGh0dHA6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9BU0lOLzA1OTYwMDE3ODkvPgoKPWl0ZW0gTDxodHRwOi8vd3d3LmFtYXpvbi5jby51ay9leGVjL29iaWRvcy9BU0lOLzA1OTYwMDE3ODkvdD4KCj1pdGVtIEw8aHR0cDovL2ludGVyZ2xhY2lhbC5jb20vZC9zY3JhcGVycz4gLS0gZXhhbXBsZXMgb2YgUGVybApwcm9ncmFtcyB0aGF0IHByb2R1Y2UgUlNTJ3MgKHdoaWNoIGFyZSB2aXNpYmxlIGF0Ckw8aHR0cDovL2ludGVyZ2xhY2lhbC5jb20vcnNzLz4gKQoKPWJhY2sKCgoKPWhlYWQxIENPUFlSSUdIVCBBTkQgRElTQ0xBSU1FUlMKCkNvcHlyaWdodCAoYykgMjAwMyw0IFNlYW4gTS4gQnVya2UuICBBbGwgcmlnaHRzIHJlc2VydmVkLgoKVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCgpUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CndpdGhvdXQgYW55IHdhcnJhbnR5OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKbWVyY2hhbnRhYmlsaXR5IG9yIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgoKUG9ydGlvbnMgb2YgdGhlIGRhdGEgdGFibGVzIGluIHRoaXMgbW9kdWxlIGFyZSBkZXJpdmVkIGZyb20gdGhlCmVudGl0eSBkZWNsYXJhdGlvbnMgaW4gdGhlIFczQyBYSFRNTCBzcGVjaWZpY2F0aW9uLgoKQ3VycmVudGx5IChKYW51YXJ5IDIwMDQpLCB0aGF0J3MgdGhlc2UgdGhyZWU6CgogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1sYXQxLmVudAogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1zcGVjaWFsLmVudAogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1zeW1ib2wuZW50CgpQb3J0aW9ucyBvZiB0aGUgY29kZSBpbiB0aGlzIG1vZHVsZSB3ZXJlIGFkYXB0ZWQgZnJvbSBwYXJ0cyBvZgpHaXNsZSBBYXMncyBMPExXUDo6U2ltcGxlPiBhbmQgdGhlIG9sZCAodjIueCkgdmVyc2lvbiBvZiBoaXMKTDxIVE1MOjpQYXJzZXI+LgoKPWhlYWQxIEFVVEhPUgoKU2VhbiBNLiBCdXJrZSBDPHNidXJrZUBjcGFuLm9yZz4KCj1jdXQKCiogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKgoKT24gQmFiYmFnZSdzIERpc2Vhc2U6CgpDaGFybGVzIEJhYmJhZ2UsIGFzIChuZWNlc3NhcmlseSkgdGhlIGZpcnN0IHBlcnNvbiB0byB3b3JrIHdpdGggbWFjaGluZXMKdGhhdCBjYW4gYXR0YWNrIHByb2JsZW1zIGF0IGFyYml0cmFyeSBsZXZlbHMgb2YgYWJzdHJhY3Rpb24sIGZlbGwgaW50byBhCnRyYXAgZmFtaWxpYXIgdG8gdG9vbHNtaXRocyBzaW5jZSwgYXMgZGVzY3JpYmVkIGhlcmUgYnkgdGhlIEVuZ2xpc2gKZXRoaWNpc3QsIExvcmQgTW91bHRvbjoKCiJPbmUgb2YgdGhlIHNhZCBtZW1vcmllcyBvZiBteSBsaWZlIGlzIGEgdmlzaXQgdG8gdGhlIGNlbGVicmF0ZWQKbWF0aGVtYXRpY2lhbiBhbmQgaW52ZW50b3IsIE1yIEJhYmJhZ2UuIEhlIHdhcyBmYXIgYWR2YW5jZWQgaW4gYWdlLCBidXQKaGlzIG1pbmQgd2FzIHN0aWxsIGFzIHZpZ29yb3VzIGFzIGV2ZXIuIEhlIHRvb2sgbWUgdGhyb3VnaCBoaXMKd29yay1yb29tcy4gSW4gdGhlIGZpcnN0IHJvb20gSSBzYXcgcGFydHMgb2YgdGhlIG9yaWdpbmFsIENhbGN1bGF0aW5nCk1hY2hpbmUsIHdoaWNoIGhhZCBiZWVuIHNob3duIGluIGFuIGluY29tcGxldGUgc3RhdGUgbWFueSB5ZWFycyBiZWZvcmUKYW5kIGhhZCBldmVuIGJlZW4gcHV0IHRvIHNvbWUgdXNlLiBJIGFza2VkIGhpbSBhYm91dCBpdHMgcHJlc2VudCBmb3JtLgonSSBoYXZlIG5vdCBmaW5pc2hlZCBpdCBiZWNhdXNlIGluIHdvcmtpbmcgYXQgaXQgSSBjYW1lIG9uIHRoZSBpZGVhIG9mCm15IEFuYWx5dGljYWwgTWFjaGluZSwgd2hpY2ggd291bGQgZG8gYWxsIHRoYXQgaXQgd2FzIGNhcGFibGUgb2YgZG9pbmcKYW5kIG11Y2ggbW9yZS4gSW5kZWVkLCB0aGUgaWRlYSB3YXMgc28gbXVjaCBzaW1wbGVyIHRoYXQgaXQgd291bGQgaGF2ZQp0YWtlbiBtb3JlIHdvcmsgdG8gY29tcGxldGUgdGhlIENhbGN1bGF0aW5nIE1hY2hpbmUgdGhhbiB0byBkZXNpZ24gYW5kCmNvbnN0cnVjdCB0aGUgb3RoZXIgaW4gaXRzIGVudGlyZXR5LCBzbyBJIHR1cm5lZCBteSBhdHRlbnRpb24gdG8gdGhlCkFuYWx5dGljYWwgTWFjaGluZS4nIgoKIkFmdGVyIGEgZmV3IG1pbnV0ZXMnIHRhbGssIHdlIHdlbnQgaW50byB0aGUgbmV4dCB3b3JrLXJvb20sIHdoZXJlIGhlCnNob3dlZCBhbmQgZXhwbGFpbmVkIHRvIG1lIHRoZSB3b3JraW5nIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgQW5hbHl0aWNhbApNYWNoaW5lLiBJIGFza2VkIGlmIEkgY291bGQgc2VlIGl0LiAnSSBoYXZlIG5ldmVyIGNvbXBsZXRlZCBpdCwnIGhlCnNhaWQsICdiZWNhdXNlIEkgaGl0IHVwb24gYW4gaWRlYSBvZiBkb2luZyB0aGUgc2FtZSB0aGluZyBieSBhIGRpZmZlcmVudAphbmQgZmFyIG1vcmUgZWZmZWN0aXZlIG1ldGhvZCwgYW5kIHRoaXMgcmVuZGVyZWQgaXQgdXNlbGVzcyB0byBwcm9jZWVkCm9uIHRoZSBvbGQgbGluZXMuJyBUaGVuIHdlIHdlbnQgaW50byB0aGUgdGhpcmQgcm9vbS4gVGhlcmUgbGF5IHNjYXR0ZXJlZApiaXRzIG9mIG1lY2hhbmlzbSwgYnV0IEkgc2F3IG5vIHRyYWNlIG9mIGFueSB3b3JraW5nIG1hY2hpbmUuIFZlcnkKY2F1dGlvdXNseSBJIGFwcHJvYWNoZWQgdGhlIHN1YmplY3QsIGFuZCByZWNlaXZlZCB0aGUgZHJlYWRlZCBhbnN3ZXIsCidJdCBpcyBub3QgY29uc3RydWN0ZWQgeWV0LCBidXQgSSBhbSB3b3JraW5nIG9uIGl0LCBhbmQgaXQgd2lsbCB0YWtlCmxlc3MgdGltZSB0byBjb25zdHJ1Y3QgaXQgYWx0b2dldGhlciB0aGFuIGl0IHdvdWxkIGhhdmUgdG9rZW4gdG8KY29tcGxldGUgdGhlIEFuYWx5dGljYWwgTWFjaGluZSBmcm9tIHRoZSBzdGFnZSBpbiB3aGljaCBJIGxlZnQgaXQuJyBJCnRvb2sgbGVhdmUgb2YgdGhlIG9sZCBtYW4gd2l0aCBhIGhlYXZ5IGhlYXJ0LiIKCiJXaGVuIGhlIGRpZWQgYSBmZXcgeWVhcnMgbGF0ZXIsIG5vdCBvbmx5IGhhZCBoZSBjb25zdHJ1Y3RlZCBubyBtYWNoaW5lLApidXQgdGhlIHZlcmRpY3Qgb2YgYSBqdXJ5IG9mIGtpbmQgYW5kIHN5bXBhdGhldGljIHNjaWVudGlmaWMgbWVuIHdobwp3ZXJlIGRlcHV0ZWQgdG8gcHJvbm91bmNlIHVwb24gd2hhdCBoZSBoYWQgbGVmdCBiZWhpbmQgaGltLCBlaXRoZXIgaW4KcGFwZXJzIG9yIGluIG1lY2hhbmlzbSwgd2FzIHRoYXQgZXZlcnl0aGluZyB3YXMgdG9vIGluY29tcGxldGUgb2YgYmUKY2FwYWJsZSBvZiBiZWluZyBwdXQgdG8gYW55IHVzZWZ1bCBwdXJwb3NlLiIKCltMb3JkIE1vdWx0b24sICJUaGUgaW52ZW50aW9uIG9mIGFsZ29yaXRobXMsIGl0cyBnZW5lc2lzLCBhbmQgZ3Jvd3RoIiwKaW4gRy4gQy4gS25vdHQsIGVkLiwgIk5hcGllciB0ZXJjZW50ZW5hcnkgbWVtb3JpYWwgdm9sdW1lIiAoTG9uZG9uLAoxOTE1KSwgcC4gMS0yNDsgcXVvdGVkIGluIENoYXJsZXMgQmFiYmFnZSAiUGFzc2FnZSBmcm9tIHRoZSBMaWZlIG9mIGEKUGhpbG9zb3BoZXIiLCBNYXJ0aW4gQ2FtcGJlbGwtS2VsbHksIGVkLiAoUnV0Z2VycyBVLiBQcmVzcyBhbmQgSUVFRQpQcmVzcywgMTk5NCksIHAuIDM0XS4KCiAtKi0KCg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIFB1YmxpY0NhdGVnb3J5TGlzdCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBQdWJsaWNDYXRlZ29yeUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBDYXRlZ29yaWVzLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTmFtZT4gJ01pc2MnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIuCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5HZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQ2F0ZWdvcnlUcmVlKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IGNhdGVnb3J5IGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNDYXRlZ29yeUxpc3Q6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QuTm90Q2F0ZWdvcnlEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNDYXRlZ29yeUxpc3Q6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgIG15IEBQdWJsaWNDYXRlZ29yeUxpc3Q7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQoIGtleXMgJXskQ2F0ZWdvcnlUcmVlfSApICkgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgICAgICBOYW1lID0+ICRDYXRlZ29yeVRyZWUtPnskS2V5fSwKICAgICAgICApOwogICAgICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5TGlzdCwgeyVDYXRlZ29yeX07CiAgICB9CgogICAgIyBQcmVwYXJlIHJldHVybiBkYXRhLgogICAgbXkgJFJldHVybkRhdGEgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4ge30sCiAgICB9OwogICAgaWYgKCBzY2FsYXIgQFB1YmxpY0NhdGVnb3J5TGlzdCA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0NhdGVnb3J5fSA9IFxAUHVibGljQ2F0ZWdvcnlMaXN0OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0NhdGVnb3J5fSA9ICRQdWJsaWNDYXRlZ29yeUxpc3RbMF07CiAgICB9CgogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UT0JPIHByb2plY3QgKEw8aHR0cHM6Ly9vdG9iby5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIExhbmd1YWdlTGlzdCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBMYW5ndWFnZUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBMYW5ndWFnZXMuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBMYW5ndWFnZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBOYW1lPiAnZW4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIuCiAgICBteSAlTGFuZ3VhZ2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCBcJUxhbmd1YWdlcyApICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgbGFuZ3VhZ2UgZGF0YScKICAgICAgICAgICAgLiAnIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1RpY2tldExpc3QuTm90TGFuZ3VhZ2VEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJUaWNrZXRMaXN0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBMYW5ndWFnZUxpc3Q7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlTGFuZ3VhZ2VzICkgewogICAgICAgIG15ICVMYW5ndWFnZSA9ICgKICAgICAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgICAgICBOYW1lID0+ICRMYW5ndWFnZXN7JEtleX0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBMYW5ndWFnZUxpc3QsIHslTGFuZ3VhZ2V9OwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICBMYW5ndWFnZSA9PiBcQExhbmd1YWdlTGlzdCwKICAgICAgICB9LAogICAgfTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIFB1YmxpY0ZBUVNlYXJjaCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBQdWJsaWNGQVFTZWFyY2ggT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBwdWJsaWMgRkFRIGVudHJpZXMuCgogICAgbXkgQElEcyA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKCiAgICAgICAgICAgIE51bWJlciAgICA9PiAnKjEzNConLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIFRpdGxlICAgICA9PiAnKnNvbWUgdGl0bGUqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICAjIGlzIHNlYXJjaGluZyBpbiBOdW1iZXIsIFRpdGxlLCBLZXl3b3JkIGFuZCBGaWVsZDEtNgogICAgICAgICAgICBXaGF0ICAgICAgPT4gJypzb21lIHRleHQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgS2V5d29yZCAgID0+ICcqd2Vic2VydmVyKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyA0LCA1LCA2IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyA3LCA4LCA5IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRkFRSUQnLCAnVGl0bGUnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRleGVzLgoKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiAnRG93bicsICMgKERvd24gfCBVcCkgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICMgZGVmYXVsdDogJ0Rvd24nCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgSUQgPT4gWwogICAgICAgICAgICAgICAgMzIsCiAgICAgICAgICAgICAgICAxMywKICAgICAgICAgICAgICAgIDEyLAogICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgIDYsCiAgICAgICAgICAgICAgICA1LAogICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTZXQgU2VhcmNoTGltaXQgb24gMCBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IGFsbCBlbnRyaWVzLgogICAgbXkgJFNlYXJjaExpbWl0ID0gMDsKCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2giKTsKCiAgICBteSAkU29ydEJ5ID0gJFBhcmFte0RhdGF9LT57T3JkZXJCeX0KICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKCiAgICAjIFRoZSBTb3J0QnkgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlLgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCRTb3J0QnkpICYmICRTb3J0QnkgbmUgJycgKSB7CiAgICAgICAgJFNvcnRCeSA9IFskU29ydEJ5XTsKICAgIH0KCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbXtEYXRhfS0+e09yZGVyQnlEaXJlY3Rpb259CiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgIG15ICRDYXRlZ29yeUlEczsKCiAgICAjIFRoZSBDYXRlZ29yeUlEIHBhcmFtIGNvdWxkIGJlIGFuIEFSUkFZIGFuIFNDQUxBUiBvciBhbiBlbXB0eSB2YWx1ZS4KICAgICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSA9ICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSB8fCAnJzsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9ICkgJiYgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRDYXRlZ29yeUlEcyA9IFsgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IF07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSBuZSAnJyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRHMgPSAkUGFyYW17RGF0YX0tPntDYXRlZ29yeUlEc307CiAgICB9CgogICAgbXkgJExhbmd1YWdlSURzOwoKICAgICMgVGhlIExhbmd1YWdlSUQgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlLgogICAgJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9ID0gJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9IHx8ICcnOwogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gKSAmJiAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gbmUgJycgKSB7CiAgICAgICAgJExhbmd1YWdlSURzID0gWyAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gXTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9IG5lICcnICkgewogICAgICAgICRMYW5ndWFnZUlEcyA9ICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgU2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyLgogICAgbXkgJFVzZXJJRCA9IDE7CgogICAgIyBTZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MuCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIFBlcmZvcm0gRkFRIHNlYXJjaC4KICAgIG15IEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICA9PiAkUGFyYW17RGF0YX0tPntOdW1iZXJ9ICB8fCAnJywKICAgICAgICBUaXRsZSAgID0+ICRQYXJhbXtEYXRhfS0+e1RpdGxlfSAgIHx8ICcnLAogICAgICAgIFdoYXQgICAgPT4gJFBhcmFte0RhdGF9LT57V2hhdH0gICAgfHwgJycsCiAgICAgICAgS2V5d29yZCA9PiAkUGFyYW17RGF0YX0tPntLZXl3b3JkfSB8fCAnJywKICAgICAgICBMYW5ndWFnZUlEcyAgICAgID0+ICRMYW5ndWFnZUlEcywKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+ICRDYXRlZ29yeUlEcywKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgKTsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBWaWV3YWJsZUl0ZW1JRHMgKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IEZBUSBkYXRhJwogICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKSc7CgogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUVNlYXJjaDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBQcmVwYXJlIHJldHVybiBkYXRhLgogICAgbXkgJFJldHVybkRhdGEgPSB7CiAgICAgICAgRGF0YSAgICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwoKICAgICMgU2V0IEZBUSBlbnRyeSBkYXRhLgogICAgaWYgKCBzY2FsYXIgQFZpZXdhYmxlSXRlbUlEcyA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9IFxAVmlld2FibGVJdGVtSURzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9ICRWaWV3YWJsZUl0ZW1JRHNbMF07CiAgICB9CgogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UT0JPIHByb2plY3QgKEw8aHR0cHM6Ly9vdG9iby5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIFB1YmxpY0ZBUUdldCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBQdWJsaWNGQVFHZXQgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIGEgUHVibGljIEZBUSBlbnRyeS4KCiAgICBteSAkUmVzdWx0ID0gJE9wZXJhdGlvbk9iamVjdC0+UnVuKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJdGVtSUQgPSAnMzIsMzMnLAogICAgICAgICAgICBHZXRBdHRhY2htZW50Q29udGVudHMgPSAxLCAgICAgICAgICAgICAgICAgICAgIyAwfDEsIGRlZmF1bHRzIHRvIDEKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQxICAgICAgICAgICAgPT4gJ1RoZSBTeW1wdG9tcycsCiAgICAgICAgICAgICAgICAgICAgRmllbGQyICAgICAgICAgICAgPT4gJ1RoZSBQcm9ibGVtJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDMgICAgICAgICAgICA9PiAnVGhlIFNvbHV0aW9uJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDQgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ1ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgICAgICAgID0+ICdDb21tZW50cycsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgICAgICAgICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICAgICAgICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdFcnJvci5qcGcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJy4uLicsICAgICAgICAgICAgICAgICAgICMgYmFzZTY0IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZSAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZnkgaWYgaXMgYW4gaW5saW5lIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+IDM0ICAgICAgICAgICAgICAgICAgICAgICAjIEZpbGVJRCBmb3IgcmVsYXRpb24gd2l0aCByaWNoIHRleHQgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdQZW5jaWwuanBnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcuLi4nLCAgICAgICAgICAgICAgICAgICAjIGJhc2U2NCBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWZ5IGlmIGlzIGFuIGlubGluZSBhdHRhY2htZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgICAgICA9PiAzNSAgICAgICAgICAgICAgICAgICAgICAgIyBGaWxlSUQgZm9yIHJlbGF0aW9uIHdpdGggcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgICA9PiAzMywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAzMywKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgICAgICAgICAgICA9PiAzMywKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICA9PiAxMDAwMzMsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5TmFtZSAgICAgPT4gJ0NhdGVnb3J5RDo6Q2F0ZWdvcnlFJywKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlFJywKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgICAgICAgID0+ICdUaGUgU3ltcHRvbXMnLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgICAgICAgID0+ICdUaGUgUHJvYmxlbScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQzICAgICAgICAgICAgPT4gJ1RoZSBTb2x1dGlvbicsCiAgICAgICAgICAgICAgICAgICAgRmllbGQ0ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNSAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICBGaWVsZDYgICAgICAgICAgICA9PiAnQ29tbWVudHMnLAogICAgICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgICAgICAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICAgICAgICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgICAgICAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgICAgICAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZCAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0RhdGF9LT57SXRlbUlEfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEISIsCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggIWRlZmluZWQoICRQYXJhbXtEYXRhfS0+e0dldEF0dGFjaG1lbnRDb250ZW50c30gKSApIHsKICAgICAgICAkUGFyYW17RGF0YX0tPntHZXRBdHRhY2htZW50Q29udGVudHN9ID0gMTsKICAgIH0KCiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgbXkgJFJldHVybkRhdGEgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfTsKCiAgICBteSBASXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0l0ZW1JRH0gKTsKICAgIG15IEBJdGVtOwoKICAgICMgU2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyLgogICAgbXkgJFVzZXJJRCA9IDE7CgogICAgbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IHB1YmxpYyBzdGF0ZSB0eXBlcy4KICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICApOwoKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICBteSAlRkFRRW50cnkgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoIFwlRkFRRW50cnkgKSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBGQVEgZGF0YScKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgcGVybWlzc2lvbnMuCiAgICAgICAgbXkgJEFwcHJvdmFsU3VjY2VzcyA9IDE7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICAgICAkQXBwcm92YWxTdWNjZXNzID0gJEZBUUVudHJ5e0FwcHJvdmVkfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJEFwcHJvdmFsU3VjY2VzcyB8fCAhJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRW50cnl7U3RhdGVUeXBlSUR9IH0gKSB7CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsICAgICAgICAgIyAgICggMHwxLCBkZWZhdWx0IDEpCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBteSAlRmlsZTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBJbmRleCApICkgewoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzOwogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBJbmRleCkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0RhdGF9LT57R2V0QXR0YWNobWVudENvbnRlbnRzfSApIHsKICAgICAgICAgICAgICAgICAgICAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgY29udGVudCB0byBiYXNlNjQuCiAgICAgICAgICAgICAgICAgICAgJEZpbGV7Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkRmlsZXtDb250ZW50fSApOwogICAgICAgICAgICAgICAgICAgICRGaWxle0lubGluZX0gID0gJEF0dGFjaG1lbnQtPntJbmxpbmV9OwogICAgICAgICAgICAgICAgICAgICRGaWxle0ZpbGVJRH0gID0gJEF0dGFjaG1lbnQtPntGaWxlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJUZpbGUgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50LT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgICAgICA9PiAkQXR0YWNobWVudC0+e0lubGluZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgeyVGaWxlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTZXQgRkFRIGVudHJ5IGRhdGEuCiAgICAgICAgICAgICRGQVFFbnRyeXtBdHRhY2htZW50fSA9IFxAQXR0YWNobWVudHM7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJdGVtLCBcJUZBUUVudHJ5OwogICAgfQoKICAgIGlmICggIXNjYWxhciBASXRlbSApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTm9GQVFEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNGQVFHZXQ6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgICRSZXR1cm5EYXRhLT57RGF0YX0tPntGQVFJdGVtfSA9IFxASXRlbTsKCiAgICByZXR1cm4gJFJldHVybkRhdGE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2RrZW5kdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCBibGl2ZSB2aXN0IHNvbSBrb21tZW50YXIgaSBFeHBsb3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpayBhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnT3ByZXR0ZWxzZXN0aWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTaWRzdCDDpm5kcmV0IGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1N0ZW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdUaWRzYmVncsOmbnNuaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEgTnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGFrIGZvciBkaW4gc3RlbW1lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0R1IGhhciBhbGxlcmVkZSBzdGVtdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdJbmdlbiByYXRlIHZhbGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdOeWVzdGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lkc3Qgw6ZuZHJlZGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpa2xlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnb2ZmZW50bGlnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZWtzdGVybiAoa3VuZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm4gKGFnZW50KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdvZmZlbnRsaWcgKGFsbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVEtQXJ0aWtlbCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1NjaGzDvHNzZWx3w7ZydGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnRWluZSBLYXRlZ29yaWUgaXN0IGVyZm9yZGVybGljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdGcmVpZ2FiZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEtS2F0ZWdvcmllbnZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0ZBUS1LYXRlZ29yaWUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdGQVEtS2F0ZWdvcmllIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbnRlcmthdGVnb3JpZSB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdXw6RobGVuIFNpZSBtaW5kZXN0ZW5zIGVpbmUgQmVyZWNodGlndW5nc2dydXBwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0FnZW50ZW4tR3J1cHBlbiwgZGllIGJlcmVjaHRpZ3Qgc2luZCwgYXVmIEZBUS1BcnRpa2VsIGluIGRpZXNlciBLYXRlZ29yaWUgenV6dWdyZWlmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdXaXJkIGltIEV4cGxvcmVyIGFscyBLb21tZW50YXIgYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBLYXRlZ29yaWUgd2lya2xpY2ggbMO2c2NoZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnU2llIGvDtm5uZW4gZGllc2UgS2F0ZWdvcmllIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdEaWVzZSBLYXRlZ29yaWUgd2lyZCBpbiBkZW4gZm9sZ2VuZGVuIEZBUS1BcnRpa2VsbiB2ZXJ3ZW5kZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGlzdCBlaW5lIFVudGVya2F0ZWdvcmllIGbDvHIgZm9sZ2VuZGUgS2F0ZWdvcmllbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlbiBGQVEtQXJ0aWtlbCB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnU2NobmVsbHN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZHMgc2luZCBlcmxhdWJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdFcndlaXRlcnRlIFN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdVbnRlcmthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdLZWluZSBVbnRlcmthdGVnb3JpZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfDhG5kZXJ1bmdzdmVybGF1ZiB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0IGFtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIEZBUS1Kb3VybmFsZGF0ZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUS1TcHJhY2hlbnZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0ZBUS1TcHJhY2hlIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnRkFRLVNwcmFjaGUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdWZXJ3ZW5kZW4gU2llIGRpZXNlIEZ1bmt0aW9uLCB3ZW5uIFNpZSBtaXQgbWVocmVyZW4gU3ByYWNoZW4gYXJiZWl0ZW4gd29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBTcHJhY2hlIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdTaWUga8O2bm5lbiBkaWVzZSBTcHJhY2hlIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEaWVzZSBTcHJhY2hlIHdpcmQgaW4gZGVuIGZvbGdlbmRlbiBGQVEtQXJ0aWtlbG4gdmVyd2VuZGV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnS29udGV4dC1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUS1BcnRpa2VsIHBybyBTZWl0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdLZWluZSBGQVEtRGF0ZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICd2b24gNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdTY2hsw7xzc2Vsd29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnQWJzdGltbXVuZyAoWnVtIEJlaXNwaWVsOiA9MTAgb2RlciA+NjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0FudGVpbCAoWnVtIEJlaXNwaWVsOiA9MjUlIG9kZXIgPjc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdHZW5laG1pZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGV0enRlIMOEbmRlcnVuZyB2b246JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRXJzdGVsbHplaXQgZGVzIEZBUS1BcnRpa2VsIChkYXZvci9kYW5hY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0Vyc3RlbGx6ZWl0IGRlcyBGQVEtQXJ0aWtlbCAoendpc2NoZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnTGV0enRlIMOEbmRlcnVuZyBkZXMgRkFRLUFydGlrZWwgKGRhdm9yL2RhbmFjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnTGV0enRlIMOEbmRlcnVuZyBkZXMgRkFRLUFydGlrZWwgKHp3aXNjaGVuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtVm9sbHRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdGQVEgU3VjaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWxhdXN3YWhsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdBYnN0aW1tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0tlaW5lIEVpbnN0ZWxsdW5nIGbDvHIgQWJzdGltbXVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ3NwZXppZmlzY2hlIEFic3RpbW11bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnWnVtIEJlaXNwaWVsOiA9MTAgb2RlciA+NjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0FudGVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnS2VpbmUgRWluc3RlbGx1bmdlbiBmw7xyIEFudGVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnYmVzdGltbXRlciBBbnRlaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdadW0gQmVpc3BpZWw6ID0yNSUgb2RlciA+NzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRXJzdGVsbHplaXQgZGVzIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnTGV0enRlIMOEbmRlcnVuZyBkZXMgRkFRLUFydGlrZWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRLUluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0Jld2VydHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ0Jld2VydHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0tlaW5lIEJld2VydHVuZ2VuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnS2VpbmUgQmV3ZXJ0dW5nZW4gZ2VmdW5kZW4hIFNlaWVuIFNpZSBkZXIgZXJzdGUgZGVyIGRpZXNlbiBGQVEtQXJ0aWtlbCBiZXdlcnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0FuaGFuZyBoZXJ1bnRlcmxhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnVW0gZGllIExpbmtzIGltIGZvbGdlbmRlbiBCZWl0cmFnIHp1IMO2ZmZuZW4sIGthbm4gZXMgbm90d2VuZGlnIHNlaW4gU3RyZyBvZGVyIFNoaWZ0IHp1IGRyw7xja2VuLCB3w6RocmVuZCBhdWYgZGVuIExpbmsgZ2VrbGlja3Qgd2lyZCAoYWJow6RuZ2lnIHZvbSB2ZXJ3ZW5kZXRlbiBCcm93c2VyIHVuZCBCZXRyaWVic3N5c3RlbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnV2llIGhpbGZyZWljaCB3YXIgZGllc2VyIEFydGlrZWw/IEJpdHRlIGdlYmVuIFNpZSBJaHJlIEJld2VydHVuZyBhYiB1bmQgaGVsZmVuIFNpZSBtaXQgZGllIFF1YWxpdMOkdCBkZXIgRkFRLURhdGVuYmFuayB6dSB2ZXJiZXNzZXJuLiBWaWVsZW4gRGFuayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduaWNodCBoaWxmcmVpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnc2VociBoaWxmcmVpY2gnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0ZBUS1UaXRlbCBhbHMgQXJ0aWtlbGJldHJlZmYgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnRkFRLVRleHQgZWluZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRIGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEtTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUS1UZXh0ICYgTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRICYgTGluayBlaW5mw7xnZW4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdLZWluZSBGQVEtQXJ0aWtlbCBnZWZ1bmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdIaWxmcmVpY2hlIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ0xlaWRlciB3dXJkZW4ga2VpbmUgcGFzc2VuZGVuIEFydGlrZWwgZ2VmdW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdOYWNoIGRlbSBFaW50aXBwZW4gZWluZXMgQmV0cmVmZnMgb2RlciBUZXh0ZXMgd2VyZGVuIGhpZXIgcGFzc2VuZGUgQXJ0aWtlbCBhbmdlemVpZ3QuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdWb2xsdGV4dC1TdWNoZSBpbiBGQVEtQXJ0aWtlbG4gKHouIEIuICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnV2FobGVpbnNjaHLDpG5rdW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ051ciBGQVEtQXJ0aWtlbCBtaXQgQWJzdGltbXVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnQW50ZWlsc2Jlc2NocsOkbmt1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdOdXIgRkFRLUFydGlrZWwgbWl0IGVpbmVtIEFudGVpbCB2b24uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdaZWl0YmVzY2hyw6Rua3VuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdOdXIgRkFRLUFydGlrZWwgZXJzdGVsbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnTnVyIFRpY2tldHMsIGRpZSBlcnN0ZWxsdCB3dXJkZW4gendpc2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnU3VjaHByb2ZpbCBhbHMgVm9ybGFnZT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdBcnRpa2VsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnU3VjaGUgbmFjaCBBcnRpa2VsbiBtaXQgU2NobMO8c3NlbHfDtnJ0ZXJuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ8OWZmZlbnRsaWNoJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdadXLDvGNrIHp1bSBGQVEtRXhwbG9yZXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ1NpZSBiZW7DtnRpZ2VuIExlc2UtIHVuZCBTY2hyZWlicmVjaHRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnS2VpbmUgS2F0ZWdvcmllbiBnZWZ1bmRlbiwgaW4gZGVuZW4gZGVyIEJlbnV0emVyIExlc2UtL1NjaHJlaWJyZWNodGUgYmVzaXR6dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnU3RhbmRhcmRzcHJhY2hlIHd1cmRlIG5pY2h0IGdlZnVuZGVuLiBOZXVlIFN0YW5kYXJkc3ByYWNoZSBrb25udGUgbmljaHQgZXJzdGVsbHQgd2VyZGVuLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ0JlbsO2dGlnZSBLYXRlZ29yaWUtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VpbmUgS2F0ZWdvcmllIGJlbsO2dGlndCBlaW5lbiBOYW1lbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0RpZXNlIEthdGVnb3JpZSBleGlzdGllcnQgYmVyZWl0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEaWVzZSBLYXRlZ29yaWUgZXhpc3RpZXJ0IGJlcmVpdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnRXMgd3VyZGUga2VpbmUgS2F0ZWdvcmllLUlEIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdLYXRlZ29yaWUgJXMga29ubnRlIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUS1LYXRlZ29yaWUgYWt0dWFsaXNpZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRLUthdGVnb3JpZSBoaW56dWdlZsO8Z3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBsw7ZzY2hlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdFcyB3dXJkZSBrZWluZSBFaW50cmFnLUlEIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ1NpZSBiZXNpdHplbiBrZWluZSBCZXJlY2h0aWd1bmcgZsO8ciBkaWVzZSBLYXRlZ29yaWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ0ZBUSBBcnRpa2VsICVzIGtvbm50ZSBuaWNodCBnZWzDtnNjaHQgd2VyZGVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdEaWUgS2F0ZWdvcmllLUlEICVzIGlzdCB1bmfDvGx0aWcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW5uIEhpc3RvcnkgbmljaHQgYW56ZWlnZW4sIGtlaW5lIEVpbnRyYWctSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUSBIaXN0b3JpZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ0tvbmZpZ3VyYXRpb25zb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IHdpcmQgYmVuw7Z0aWd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRpb25zb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG11c3MgZWluZSBIQVNIIFJlZmVyZW56IHNlaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnS2VpbmUgS29uZmlndXJhdGlvbnNvcHRpb24gZsO8ciBkaWUgQW5zaWNodCAiJXMiIGdlZnVuZGVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdLZWluZSBMYW5ndWFnZUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRGVyIE5hbWUgaXN0IGVyZm9yZGVybGljaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdEaWVzZSBTcHJhY2hlIGV4aXN0aWVydCBiZXJlaXRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdTcHJhY2hlICVzIGtvbm50ZSBuaWNodCBnZWzDtnNjaHQgd2VyZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdGQVEtU3ByYWNoZSBha3R1YWxpc2llcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdGQVEtU3ByYWNoZSBoaW56dWdlZsO8Z3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1NwcmFjaGUgTMO2c2NoZW4gJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ0VyZ2VibmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGV0enRlIEFrdHVhbGlzaWVydW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSBEeW5hbWlzY2hlIEZlbGRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnS2VpbihlKSAlcyDDvGJlcm1pdHRlbHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ0xhbmd1YWdlT2JqZWN0IGthbm4gbmljaHQgZ2VsYWRlbiB3ZXJkZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0tlaW4gRXJnZWJuaXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEtTnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ0xldHp0ZSDDhG5kZXJ1bmcgdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRLUFydGlrZWwgRXJzdGVsbHplaXQgKHZvci9uYWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEtQXJ0aWtlbCBFcnN0ZWxsemVpdCAoendpc2NoZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRLUFydGlrZWwgw4RuZGVydW5nc3plaXQgKHZvci9uYWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEtQXJ0aWtlbCDDhG5kZXJ1bmdzemVpdCAoendpc2NoZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ2lzdCBnbGVpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnR3LDtsOfZXIgYWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdpc3QgZ3LDtsOfZXIvZ2xlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ0tsZWluZXIgYWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdLbGVpbmVyL2dsZWljaCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdCZW7DtnRpZ2UgRGF0ZWktSUQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVmllbGVuIERhbmsgZsO8ciBJaHJlIEJld2VydHVuZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdTaWUgaGFiZW4gYmVyZWl0cyBhYmdlc3RpbW10ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0tlaW5lIEJld2VydHVuZyBhdXNnZXfDpGhsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnQWJzdGltbXVuZ3NmdW5rdGlvbiBpc3QgbmljaHQgYWt0aXZpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ0RpZSBBYnN0aW1tdW5nc3JhdGUgaXN0IG5pY2h0IGRlZmluaWVydCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnRkFRLUFydGlrZWwtQXVzZHJ1Y2snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdFcnN0ZWxsdCB6d2lzY2hlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICdJdGVtSUQgYmVuw7Z0aWd0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLUFydGlrZWwgKG5ldSBlcnN0ZWxsdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEtQXJ0aWtlbCAoYWt0dWFsaXNpZXJ0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRLUFydGlrZWwgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdLZWluIFR5cCBpc3QgZGVmaW5pZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdUeXAgbXVzcyBlbnR3ZWRlciBMYXN0Q3JlYXRlIG9kZXIgTGFzdENoYW5nZSBvZGVyIFRvcDEwIHNlaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnUlNTIERhdGVpIGthbm4gbmljaHQgZXJzdGVsbHQgd2VyZGVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoRkFRIFZvbGx0ZXh0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gS3VuZGUgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEt1bmRlbiAoRkFRIFZvbGx0ZXh0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSDDlmZmZW50bGljaCAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIMOWZmZlbnRsaWNoIChGQVEgVm9sbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ0Jld2VydHVuZyBiZW7DtnRpZ3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEaWVzZXIgQXJ0aWtlbCBpc3QgbGVlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBlcnN0ZWxsdGUgRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnWnVsZXR6dCBnZcOkbmRlcnRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgRkFRLUFydGlrZWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnSW5oYWx0c3R5cCc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ8O2ZmZlbnRsaWNoJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRWluIEZpbHRlciB6dXIgYXV0b21hdGlzY2hlbiBHZW5lcmllcnVuZyB2b24gRkFRLUxpbmtzLCB3ZW5uIGVpbiBIaW53ZWlzIGF1ZiBlaW5lbiBGQVEtQXJ0aWtlbCBpZGVudGlmaXppZXJ0IHdpcmQuIERhcyBFbGVtZW50IEltYWdlIGVybGF1YnQgendlaSBFaW5nYWJlZm9ybWVuOiBFcnN0ZW5zIGRlciBOYW1lIGVpbmVzIEljb25zICh6LiBCLiBmYXEucG5nKS4gSW4gZGllc2VtIEZhbGwgd2lyZCBhdWYgZGFzIEdyYWZpay1WZXJ6ZWljaG5pcyBkZXMgT1RPQk8genVnZWdyaWZmZW4uIEFscyB6d2VpdGUgTcO2Z2xpY2hrZWl0IGthbm4gbWFuIGFiZXIgYXVjaCBkZW4gZGlyZWt0ZW4gTGluayB6dXIgR3JhZmlrIGFuZ2ViZW4gKHouIEIuIGh0dHA6Ly9vdG9iby5vcmcvZmFxLnBuZykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0ZBUS1BcnRpa2VsIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLUZhcmJlIGbDvHIgZGFzIEJld2VydHVuZ3MtRXJnZWJuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdDYWNoZXplaXQgZsO8ciBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3JpZW52ZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnS2F0ZWdvcmllbi1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdLdW5kZW4tRkFRIERydWNrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnS3VuZGVuLUZBUS1iZXpvZ2VuZSBBcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ0t1bmRlbi1GQVEtYmV6b2dlbmUgQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnS3VuZGVuIEZBUSBEZXRhaWxhbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ0t1bmRlbi1GQVEgU3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnS3VuZGVuLUZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnRGV6aW1hbHN0ZWxsZW4gZGVzIEVyZ2Vibmlzc2VzIGRlciBBcnRpa2VsYmV3ZXJ0dW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnUm9vdC1LYXRlZ29yaWUtTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ1N0YW5kYXJkLVNwcmFjaGUgZsO8ciBGQVEtQXJ0aWtlbCBpbSBFaW56ZWwtU3ByYWNoLU1vZHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdTdGFuZGFyZG3DpMOfaWcgbWF4aW1hbCBhbmdlemVpZ3RlIFplaWNoZW4gaW4gZGVuIFRpdGVsbiBkZXIgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1N0YW5kYXJkLVByaW9yaXTDpHQgdm9uIFRpY2tldHMgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ1N0YW5kYXJkIFN0YXR1cyBlaW5lcyBGQVEtRWludHJhZ3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZC1TdGF0dXMgdm9uIFRpY2tldHMgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQgVGlja2V0dHlwIGbDvHIgZGllIEdlbmVobWlndW5nIHZvbiBGQVEtQXJ0aWtlbG4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkd2VydCBkZXMgQWN0aW9uLVBhcmFtZXRlcnMgZsO8ciBkZW4gw7ZmZmVudGxpY2hlbiBGQVEtQmVyZWljaC4gRGVyIEFjdGlvbi1QYXJhbWV0ZXIgd2lyZCB2b24gZGVuIFNrcmlwdGVuIGRlcyBTeXN0ZW1zIGJlbnV0enQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmVuIFNpZSBBY3Rpb25zLCBpbiBkZW5lbiBpbSBWZXJrbsO8cGZ0ZS1PYmpla3RlLVdpZGdldCBlaW4gRWluc3RlbGx1bmdlbi1Lbm9wZiB2ZXJmw7xnYmFyIHNlaW4gc29sbCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZsO8ciBkaWVzZSBBY3Rpb25zIGRpZSBmb2xnZW5kZW4gSlMtIHVuZCBDU1MtRGF0ZWllbiByZWdpc3RyaWVydCBzZWluIG3DvHNzZW46ICBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB1bmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBvYiBkZXIgRkFRLVRpdGVsIG1pdCBkZW0gQXJ0aWtlbGJldHJlZmYgdmVya2V0dGV0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGVpbiDDnGJlcnNpY2h0cy1Nb2R1bCB1bSBkaWUgU21hbGwtQW5zaWNodCBpbSBGQVEtSm91cm5hbCBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzLU1vZHVsIHVtIGRpZSBTbWFsbC1BbnNpY2h0IGVpbmVyIEZBUS1MaXN0ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVyIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlciBpbSBLdW5kZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBQdWJsaWMtSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmRhdHRyaWJ1dGUgZsO8ciBkaWUgU3VjaGUgaW4gZGVuIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4gaW0gSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuIFN1Y2hkaWFsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgSW5mb3JtYXRpb25lbiwgd2VsY2hlIGluIGVpbiBGQVEtYmFzaWVyZW5kZXMgVGlja2V0IGVpbmdlZ2ViZW4gd2VyZGVuLiAiS29tcGxldHRlIEZBUSIgYmVpbmhhbHRldCBkZW4gVGV4dCwgQW5ow6RuZ2UgdW5kIElubGluZS1CaWxkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgUGFyYW1ldGVyIGbDvHIgZGFzIMOcYmVyc2ljaHRzc2VpdGVuLUJhY2tlbmQuICJMaW1pdCIgZGVmaW5pZXJ0IGRpZSBBbnphaGwgZGVyIEVpbnRyw6RnZSwgZGllIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3Qgd2VyZGVuLiAiR3JvdXAiIHdpcmQgdmVyd2VuZGV0LCB1bSBkZW4gWnVncmlmZiBhdWYgZGFzIFBsdWdpbiB6dSBiZWdyZW56ZW4gKGJzcHcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBzdGV1ZXJ0LCBvYiBkYXMgUGx1Z2luIHN0YW5kYXJkbcOkw59pZyBha3RpdmllcnQgaXN0IG9kZXIgb2IgZGVyIFVzZXIgZXMgbWFudWVsbCBha3RpdmllcmVuIG11c3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGltIEZBUS1FeHBsb3Jlci4gRGllc2UgT3B0aW9uIGhhdCBrZWluZSBBdXN3aXJrdW5nIGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW0gRkFRLUpvdXJuYWwuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW4gZGVyIEZBUS1TdWNoZS4gRGllc2UgT3B0aW9uIGhhdCBrZWluZSBBdXN3aXJrdW5nIGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5pZXJ0IHdvIGRlciBMaW5rIGF1cyBcJ0ZBUSBlaW5mw7xnZW5cJyBhbmdlemVpZ3Qgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pdGlvbiBkZXIgZnJlaWVuIFRleHRmZWxkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0RpZXNlIEZBUSBsw7ZzY2hlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBFcnN0ZWxsLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgQmVhcmJlaXR1bmdzLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW4gZGVyIEZBUSDDnGJlcnNpY2h0IGRlcyBLdW5kZW5iZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGluIGRlciBGQVEgw5xiZXJzaWNodCBkZXMgw7ZmZmVudGxpY2hlbiBCZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW0gRkFRIERydWNrLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBEcnVjay1CaWxkc2NoaXJtIGRlcyBLdW5kZW5iZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgRHJ1Y2stQmlsZHNjaGlybSBkZXMgw7ZmZmVudGxpY2hlbiBCZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgU3VjaC1CaWxkc2NoaXJtIGRlcyBBZ2VudGVuYmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW0gRkFRIFN1Y2gtQmlsZHNjaGlybSBkZXMgS3VuZGVuYmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBTdWNoLUJpbGRzY2hpcm0gZGVzIMO2ZmZlbnRsaWNoZW4gQmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgZHluYW1pc2NoZSBGZWxkZXIgaW4gZGVyIEtsZWluYW5zaWNodCB2b24gRkFRLUFydGlrZWxuIGltIEFnZW50ZW5iZXJlaWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBab29tLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW0gRkFRIFpvb20tQmlsZHNjaGlybSBkZXMgS3VuZGVuYmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgWm9vbS1CaWxkc2NoaXJtIGRlcyDDtmZmZW50bGljaGVuIEJlcmVpY2hzLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0ZBUSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdNdWx0aXBsZSBTcHJhY2hlbiBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnQWt0aXZpZXJlbiBTaWUgZGllIHp1Z2Vow7ZyaWdlIEFydGlrZWxmdW5rdGlvbiBmw7xyIGRhcyBLdW5kZW4tRnJvbnRlbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQmV3ZXJ0dW5ncy1NZWNoYW5pc211cyBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdBbnNpY2h0IG5hY2ggS2F0ZWdvcmllbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZsO8ciBSaWNodGV4dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdGQVEtQmVyZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVEtQmVyZWljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdGQVEgTMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0ZBUSBCZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdGQVEgSGlzdG9yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtSm91cm5hbCBBbnplaWdlLUxpbWl0IGbDvHIgZGllIFNtYWxsLUFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtw5xiZXJzaWNodCAia2xlaW5lcyIgTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUSBEcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnU3VjaC1CYWNrZW5kLVJvdXRlciBmw7xyIGRpZSBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZlbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZlbGQ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnVm9sbHN0w6RuZGlnZXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBwZSBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRLUhpc3RvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbnRlcm5lIEZBUS1GZWxkZXIgaW4gZWluZW0gRkFRLWJhc2llcnRlblRpY2tldCB2ZXJ3ZW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRGVuIE5hbWVuIGplZGVzIEZBUS1GZWxkZXMgZWluZW0gRkFRLWJhc2llcnRlbiBUaWNrZXQgdmVyd2VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ09iZXJmbMOkY2hlIGF1ZiBkZXIgZGllIFNjaG5lbGxzdWNoZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1NwcmFjaGVudmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ1NwcmFjaGVudmVyd2FsdHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdMaW1pdCBmw7xyIGRpZSBTdWNoZSBiZWltIEVyc3RlbGxlbiBkZXIgU2NobMO8c3NlbHdvcnQtRkFRLUFydGlrZWwtTGlzdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0RpZXNlIEZBUSBtaXQgZWluZW0gYW5kZXJlbiBPYmpla3QgdmVya27DvHBmZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICdMaXN0ZSBkZXIgUXVldWUtTmFtZW4gZsO8ciB3ZWxjaGUgZGllIHp1Z2Vow7ZyaWdlbiBBcnRpa2VsLUZlYXR1cmUgYWt0aXZpZXJ0IHd1cmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGUgZGVyIFN0YXR1c3R5cGVuLCBkaWUgaW4gZGVyIEFnZW50ZW5vYmVyZmzDpGNoZSBnZW51dHp0IHdlcmRlbiBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0ZSBkZXIgU3RhdHVzdHlwZW4sIGRpZSBpbiBkZXIgS3VuZGVub2JlcmZsw6RjaGUgZ2VudXR6dCB3ZXJkZW4ga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RlIGRlciBTdGF0dXN0eXBlbiwgZGllIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlIGdlbnV0enQgd2VyZGVuIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdMYWRlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRhcyDDtmZmZW50bGljaGUgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVybCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1FeHBsb3JlciBpbSBLdW5kZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUpvdXJuYWwgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEdyw7bDn2Ugdm9uIFRpdGVsbiBpbiBIw6R1ZmlnLWdlc3RlbGx0ZW4tRnJhZ2VuLUJlaXRyw6RnZW4gd2VsY2hlIGltIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1FeHBsb3JlciBkZXIgQWdlbnRlbsO8YmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbSBIw6R1ZmlnLWdlc3RlbGx0ZS1GcmFnZW4tRXhwbG9yZXIgZGVyIEt1bmRlbsO8YmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW0gSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuLUV4cGxvcmVyIGRlciDDtmZmZW50bGljaGVuIMOcYmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW4gZGVyIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1TdWNoZSBkZXIgQWdlbnRlbsO8YmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW4gZGVyIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1TdWNoZSBkZXIgS3VuZGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW4gZGVyIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1TdWNoZSBkZXIgw7ZmZmVudGxpY2hlbiDDnGJlcnNpY2h0IGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbiBGQVEtQmVyaWNodGVuIGluIGRlciBBZ2VudGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBFcnpldWdlbiBkZXMgSFRNTCBPcGVuU2VhcmNoLVByb2ZpbHMgZsO8ciBkaWUga3VyemUgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBHZW5lcmllcmVuIGRlcyBIVE1MICJPcGVuU2VhcmNoIiBQcm9maWxzIHp1ciBGQVEtU3VjaGUgaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBHZW5lcmllcmVuIGRlcyBIVE1MICJPcGVuU2VhcmNoIi1Qcm9maWxzIHp1ciBGQVEtU3VjaGUgw7xiZXIgZGFzIEJyb3dzZXItU3VjaGZlbGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICdOZXVlciBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTmV1ZSBGQVEtQXJ0aWtlbCBiZW7DtnRpZ2VuIGVpbmUgRnJlaWdhYmUgdm9yIGRlciBWZXLDtmZmZW50bGljaHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBLdW5kZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGluIFN1Y2hlcmdlYm5pc3NlbiBkaWUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gcHJvIFNlaXRlIGluIGRlciBLdW5kZW5vYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGluIFN1Y2hlcmdlYm5pc3NlbiBkaWUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gcHJvIFNlaXRlIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0FuemFobCBkZXIgenUgYW56ZWlnZW5kZW4gQXJ0aWtlbCBpbiBsZXR6dGVuIMOEbmRlcnVuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0FuemFobCBkZXIgYW56dXplaWdlbmRlbiBBcnRpa2VsIGluIHp1bGV0enQgZXJzdGVsbHRlIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQW56YWhsIGRlciBhbnp1emVpZ2VuZGVuIEFydGlrZWwgaW0gVG9wIDEwIEZlYXR1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICdBdXNnYWJlZmlsdGVyIHp1bSBIaW56dWbDvGdlbiB2b24gSmF2YVNjcmlwdCB6dXIgS3VuZGVuLVRpY2tldC1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdBdXNnYWJlLUxpbWl0IGRlciB6dWdlaMO2cmlnZW4gRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1Kb3VybmFscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1PdmVyaWV3cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdGQVEgZHJ1Y2tlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ8OWZmZlbnRsaWNoZXMgRkFRIERydWNrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICfDlmZmZW50bGljaGUgRkFRIERldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ8OWZmZlbnRsaWNoZXMgRkFRIFN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICfDlmZmZW50bGljaGVzIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUXVldWUgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdHZXdpY2h0dW5nIGbDvHIgZGllIEJld2VydHVuZy4gRGVyIEtleSBtdXNzIGluIFByb3plbnQgYW5nZWdlYmVuIHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0ZBUSBkdXJjaHN1Y2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJ0ZBUSBkdXJjaHN1Y2hlbiAiS2xlaW4iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0ZBUSBkdXJjaHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0F1c3dhaGwsIHdpZSB2aWVsZSBGQVEtQXJ0aWtlbCBpbiBkZXIgSm91cm5hbC3DnGJlcnNpY2h0ICJLbGVpbiIgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0F1c3dhaGwsIHdpZSB2aWVsZSBGQVEtQXJ0aWtlbCBpbiBkZXIgw5xiZXJzaWNodCAiS2xlaW4iIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0enQgZGllIG1heGltYWxlIEjDtmhlIChpbiBQaXhlbG4pIHZvbiBJbmxpbmUtSFRNTC1GZWxkZXIgaW4gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldHp0IGRpZSBtYXhpbWFsZSBIw7ZoZSAoaW4gUGl4ZWxuKSB2b24gSW5saW5lLUhUTUwtRmVsZGVyIGluIEN1c3RvbWVyRkFRWm9vbSAodW5kIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXR6dCBkaWUgbWF4aW1hbGUgSMO2aGUgKGluIFBpeGVsbikgdm9uIElubGluZS1IVE1MLUZlbGRlciBpbiBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0enQgZGllIG1heGltYWxlIEjDtmhlIChpbiBQaXhlbG4pIHZvbiBJbmxpbmUtSFRNTC1GZWxkZXIgaW4gQ3VzdG9tZXJGQVFab29tICh1bmQgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnWmVpZ3QgZGllIFNjaGFsdGZsw6RjaGUgIkZBUS1MaW5rIGVpbmbDvGdlbiIgaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBTY2hhbHRmbMOkY2hlICJGQVEtVGV4dCAmIExpbmsgZWluZsO8Z2VuIC8gS29tcGxldHRlIEZBUSAmIExpbmsgZWluZsO8Z2VuIiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbCBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBTY2hhbHRmbMOkY2hlICJGQVEtVGV4dCBlaW5mw7xnZW4gLyBLb21wbGV0dGUgRkFRIGVpbmbDvGdlbiIgaW4gQWdlbnRGQVFab29tU21hbGwgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ0hUTUwgRGFyc3RlbGx1bmcgZGVyIEZBUS1BcnRpa2VsIGVpbnNjaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdGQVEgUGZhZCBhbnplaWdlbiBqYS9uZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWdlIHVuZ8O8bHRpZ2UgRWludHLDpGdlIGltIEZBUS1FeHBsb3Jlci1FcmdlYm5pcyBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ0FydGlrZWwgYXVzIFN1YmthdGVnb3JpZW4gYW56ZWlnZW4gamEvbmVpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgTGFzdENoYW5nZSBGZWF0dXJlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0ludGVyZmFjZXMgaW4gZGVuZW4gZGFzIExhc3RDcmVhdGUgRmVhdHVyZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnWmVpZ3QgZGllIFN0ZXJuZSBmw7xyIGRpZSBBcnRpa2VsIG1pdCBlaW5lciBCZXdlcnR1bmcgZ2xlaWNoIG9kZXIgZ3LDtsOfZXIgd2llIGRlciBkZWZpbmllcnRlIFdlcnQgYW4gKFNldHplbiBTaWUgZGVuIFdlcnQgYXVmIFwnMFwnIHp1bSBEZWFrdGl2aWVyZW4gZGVyIEF1c2dhYmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVG9wIDEwIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVm90aW5nIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lbiBGQVEtQXJ0aWtlbCBtaXQgYW5kZXJlbiBPYmpla3RlbiB6dSB2ZXJrbsO8cGZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgbMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgdW0gZGllIEhpc3RvcmllIGVpbmVzIEZBUS1BcnRpa2VscyBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIHp1IGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgenVyIHZvcmhlcmlnZW4gU2VpdGUgenVyw7xjayB6dSBnZWhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgZHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdMw7ZzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ051ciBUZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ1N0YW5kYXJkLVNwcmFjaGUgZsO8ciBwYXNzZW5kZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRGVyIElkZW50aWZpa2F0b3IgZsO8ciBlaW5lbiBGQVEtQXJ0aWtlbCwgei4gQi4gRkFRIywgS0IjLCBNeUZBUSMuIERlciBTdGFuZGFyZHdlcnQgaXN0IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ05vcm1hbFwnIG1pdCBhbmRlcmVuIFwnRkFRXCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBkYXNzIGVpbiBcJ0ZBUVwnLU9iamVrdGUgbWl0IGRlbSBMaW5rdHlwIFwnUGFyZW50Q2hpbGRcJyBtaXQgYW5kZXJlbiBcJ0ZBUVwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZWZpbmllcnQsIGRhc3MgZWluIFwnRkFRXCctT2JqZWt0ZSBtaXQgZGVtIExpbmt0eXAgXCdOb3JtYWxcJyBtaXQgYW5kZXJlbiBcJ1RpY2tldFwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdUaWNrZXRcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JvZHkgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JldHJlZmYgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ1dlcmt6ZXVnbGVpc3RlbmVpbnRyYWcgZsO8ciBkZW4gU2NobmVsbHp1Z3JpZmYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm4gKEt1bmRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChBZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnw7ZmZmVudGxpY2ggKEFsbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ8O2ZmZlbnRsaWNoICjDtmZmZW50bGljaCknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGQgRkFRIEFydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLZXl3b3Jkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXBwcm92YWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0FkZCBGQVEgQ2F0ZWdvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdFZGl0IEZBUSBDYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZGQgY2F0ZWdvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWRkIENhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0IENhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcnkgb2YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUXVpY2sgU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0FkdmFuY2VkIFNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVEgQXJ0aWNsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzdWJjYXRlZ29yaWVzIGZvdW5kLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yeSBvZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnQWRkIEZBUSBMYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXQgRkFRIExhbmd1YWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWRkIGxhbmd1YWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkZCBMYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdCBMYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb250ZXh0IFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdObyBGQVEgZGF0YSBmb3VuZC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ291dCBvZiA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ0tleXdvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdGUgKGUuZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdSYXRlIChlLmcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0FwcHJvdmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhc3QgY2hhbmdlZCBieSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFGdWxsdGV4dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBTZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWxlIFNlbGVjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnTm8gdm90ZSBzZXR0aW5ncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1NwZWNpZmljIHZvdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2UuZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdSYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdObyByYXRlIHNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdTcGVjaWZpYyByYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZS5nLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1JhdGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05vIHZvdGVzIGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRG93bmxvYWQgQXR0YWNobWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgeW91ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25vdCBoZWxwZnVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3ZlcnkgaGVscGZ1bCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0IEZBUSBUZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luc2VydCBGdWxsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcnQgRkFRIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VydCBGQVEgVGV4dCAmIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luc2VydCBGdWxsIEZBUSAmIExpbmsnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdObyBGQVEgYXJ0aWNsZXMgZm91bmQuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1ZvdGUgcmVzdHJpY3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmF0ZSByZXN0cmljdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnVGltZSByZXN0cmljdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ0FydGljbGUgTnVtYmVyPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1B1YmxpYyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFjayB0byBGQVEgRXhwbG9yZXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSBjYXRlZ29yeSB1cGRhdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRIGNhdGVnb3J5IGFkZGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdEZWxldGUgQ2F0ZWdvcnknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUSBIaXN0b3J5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIEpvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUSBsYW5ndWFnZSB1cGRhdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRIGxhbmd1YWdlIGFkZGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdEZWxldGUgTGFuZ3VhZ2UgJSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGFzdCB1cGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnRkFRIER5bmFtaWMgRmllbGRzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdObyAlcyBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnTGFzdCBDaGFuZ2VkIGJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUaGFua3MgZm9yIHlvdXIgdm90ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05vIHJhdGUgc2VsZWN0ZWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEgQXJ0aWNsZSBQcmludCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUUZ1bGx0ZXh0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gQ3VzdG9tZXIgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUHVibGljICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdUaGlzIGFydGljbGUgaXMgZW1wdHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBGQVEgYXJ0aWNsZXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpYyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09LJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0FkZCBGQVEgYXJ0aWNsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBjb2xvdXIgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnQ2FjaGUgVGltZSB0byBMZWF2ZSBmb3IgRkFRIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnQ2F0ZWdvcnkgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnQ3VzdG9tZXIgRkFRIFByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnQ3VzdG9tZXIgRkFRIFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0N1c3RvbWVyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aWxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5lZCBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0RlbGV0ZSB0aGlzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdCB0aGlzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0V4cGxvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ0ZBUSBBSkFYIFJlc3BvbmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdGQVEgQXJlYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVEgQXJlYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdGQVEgRGVsZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdGQVEgRWRpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUSBQcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnRmllbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZpZWxkNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0Z1bGwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdG9yeSBvZiB0aGlzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYW4gRkFRIGJhc2VkIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYW4gRkFRIGJhc2VkIFRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnTGFuZ3VhZ2UgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0IG9mIHN0YXRlIHR5cGVzIHdoY2loIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgaHRleSBnZXQgcHVibGlzaGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1ByaW50IHRoaXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnUHVibGljIEZBUSBQcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ1B1YmxpYyBGQVEgWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnUHVibGljIEZBUSBzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnUHVibGljIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1NlYXJjaCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1Nob3cgRkFRIHBhdGggeWVzL25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHV0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ1RleHQgT25seSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybmFsIChjdXN0b21lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybmFsIChhZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHVibGljIChhbGwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ3B1YmxpYyAocHVibGljKSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBhIGxhcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnUGFsYWJyYXMgY2xhdmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnU2UgcmVxdWllcmUgdW5hIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXByb2JhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0FncmVnYXIgY2F0ZWdvcsOtYSBhIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgY2F0ZWdvcsOtYSBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkaXRhciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcsOtYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNjaW9uZSBhbCBtZW5vcyB1biBncnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGFnZW50ZXMgcXVlIHB1ZWRlbiBhY2NlZGVyIGEgbG9zIGFydMOtY3Vsb3MgZGUgZXN0YSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZSBtb3N0cmFyw6EgY29tbyBjb21lbnRhcmlvIGVuIGVsIGV4cGxvcmFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfCv1JlYWxtZW50ZSBkZXNlYSBlbGltaW5hciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXN0w6Egc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgc3ViY2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBhcnTDrWN1bG8gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnRXN0YSBwZXJtaXRpZG8gbG9zIGNvbW9kaW5lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIGF2YW56YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBzdWJjYXRlZ29yw61hcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlhbCBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW5pZG8gZGVsIGhpc3RvcmlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRmVjaGEgZGUgQ3JlYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGVsIERpYXJpbyBkZSBsYXMgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBJZGlvbWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnQcOxYWRpciBsZW5ndWFqZSBQcmVndW50YXMgRnJlY3VlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRhciBsZW5ndWFqZSBQcmVndW50YXMgRnJlY3VlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVdGlsaXphIGVzdGEgZnVuY2nDs24gc2kgZGVzZWFzIHRyYWJhamFyIGNvbiB2YXJpb3MgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQcOxYWRpciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnQcOxYWRpciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIMKhRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gZGUgbGFzIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSBlc3RhIHNpZW5kbyB1c2FkbyBwb3IgbG9zIHNpZ3VpZW50ZXMgQXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBanVzdGVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydMOtY3Vsb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYWJyYSBjbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90YSAoZWptLiBJZ3VhbCBhIDEwIG8gbWF5b3IgYSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnUHVudMO6YSAoRWptLiBJZ3VhbCBhIDI1JSBvIG1heW9yIGEgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0Fwcm9iYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1VsdGltbyBjYW1iaW8gcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZSBBcnTDrWN1bG9zIEZBUSAoYW50ZXMgLyBkZXNwdcOpcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZWwgQXJ0aWN1bG8gRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydGljdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBBY3R1YWxpemFjacOzbiBkZWwgQXJ0aWN1bG8gRkFRIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dG8gY29tcGxldG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1NlbGVjY2nDs24gZGUgcGVyZmlsICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnU2luIGFqdXN0ZXMgZGUgVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1ZvdG9zIGVzcGVjw61maWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdFai4gSWd1YWwgYSAxMCBvIG1heW9yIGEgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1B1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdTaW4gYWp1c3RlcyBkZSBwdW50dWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUHVudHVhY2nDs24gZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdlam06IElndWFsIGEgMjUlIG8gbWF5b3IgcXVlIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydMOtY3VsbyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUHVudHVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvLiBTZWEgZWwgcHJpbWVybyBlbiB2YWxvcmFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FyZ2FyIEFyY2hpdm8gYWRqdW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1BhcmEgYWJyaXIgbGlua3MgZW4gbG9zIHNpZ3VpZW50ZXMgYmxvcXVlcyBkZSBkZXNjcmlwY2nDs24sIHBvZHJpYSBuZWNlc2l0YXIgcHJlc2lvbmFyIGxhIHRlY2xhcyBDdHJsLCBDbWQgbyBTaGlmdCBtaWVudHJhcyBwcmVzaW9uYSBlbCBsaW5rIChkZXBlbmRlIGRlbCBicm93c2VyIHkgZWwgU08pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnwr9RdcOpIHRhbiDDunRpbCBmdWUgZXN0ZSBhcnTDrWN1bG8/IFBvciBmYXZvciBkw6lub3Mgc3UgY2FsaWZpY2FjacOzbiB5IGF5dWRlIGEgbWVqb3JhciBsYSBiYXNlIGRlIGRhdG9zIGRlIGxhcyBGQVEuIMKhR3JhY2lhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb2NvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211eSDDunRpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWdyZWdhciB0aXR1bG8gZGUgRkFRIGEgYXN1bnRvIGRlbCBhcnTDrWN1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0YXIgVGV4dG8gZGUgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luc2VydGFyIEZBUSBjb21wbGV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJ0YXIgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcnRhciB0ZXh0byB5IGVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgRkFRIGNvbXBsZXRhcyB5IGVubGFjZSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnRXN0byBwb2Ryw61hIHNlciDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTm8gc2UgZW5jb250cmF0b24gcmVjdXJzb3Mgw7p0aWxlcyBwYXJhIGVsIHRlbWEgeSBlbCB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0VzY3JpYmEgdW4gdGVtYSBvIHRleHRvIHBhcmEgb2J0ZW5lciB1bmEgbGlzdGEgZGUgcmVjdXJzb3Mgw7p0aWxlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1PDs2xvIGxvcyBhcnTDrWN1bG9zIEZBUSBjb24gdm90b3MuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHB1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ1PDs2xvIGxvcyBhcnTDrWN1bG9zIEZBUSBjb24gY2FsaWZpY2FjacOzbi4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdTw7NsbyBBcnTDrWN1bG9zIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1PDs2xvIEFydMOtY3Vsb3MgRkFRIGNyZWFkb3MgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnwr9QZXJmaWwgZGUgQsO6c3F1ZWRhIGNvbW8gUGxhbnRpbGxhPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgQXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQnVzY2FyIGFydMOtY3Vsb3MgY29uIGxhIHBhbGFicmEgY2xhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1ZvbHZlciBhIGV4cGxvcmFkb3IgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfCoU5lY2VzaXRhcyBlbCBwZXJtaXNvIHJ3ICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ8KhTm8gc2UgZW5jb250cmFyb24gY2F0ZWdvcsOtYXMgZG9uZGUgZWwgdXN1YXJpbyB0ZW5nYSBwZXJtaXNvcyBkZSBsZWN0dXJhIC8gZXNjcml0dXJhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmfDum4gaWRpb21hIHByZWRldGVybWluYWRvIHkgbm8gc2UgcHVlZGUgY3JlYXIgdW5vIG51ZXZvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ8KhU2UgbmVjZXNpdGEgbGEgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnwqFMYXMgY2F0ZWdvcsOtYXMgZGViZW4gdGVuZXIgdW4gbm9tYnJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ8KhRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gbmluZ8O6bmEgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnwqFObyBzZSBwdWRvIGVsaW1pbmFyIGxhIGNhdGVnb3LDrWEgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ8KhQ2F0ZWdvcsOtYSBkZSBsYXMgRkFRIGFjdHVhbGl6YWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnwqFDYXRlZ29yw61hIGRlIGxhcyBGQVEgYcOxYWRpZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0JvcnJhciBjYXRlZ29yw61hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBuaW5nw7puICBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnwqFObyB0aWVuZSBwZXJtaXNvIHBhcmEgZXN0YSBjYXRlZ29yw61hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgZWwgYXJ0w61jdWxvIGRlIGxhcyBGQVEgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0xhIENhdGVnb3J5SUQgJXMgbm8gZXMgdmFsaWRhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgeWEgcXVlIG5vIHNlIGhhIHByb3BvcmNpb25hZG8gbmluZ8O6biBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnSGlzdG9yaWFsIGRlIGxhcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEaWFyaW8gZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdOZWNlc2l0YSB1bmEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfCoUxhIG9wY2nDs24gZGUgY29uZmlndXJhY2nDs24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVjZXNpdGEgIHNlciB1biByZWZlcmVuY2lhIEhBU0ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnwqFObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmd1bmEgb3Bjw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgbGEgdmlzdGEgIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIExhbmd1YWplSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ8KhU2UgcmVxdWllcmUgZWwgbm9tYnJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ8KhRXN0ZSBpZGlvbWEgeWEgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgZWwgaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfCoUlkaW9tYSBkZSBsYXMgRkFRIGFjdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnwqFJZGlvbWEgZGUgbGFzIEZBUSBhw7FhZGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnQm9ycmFyIElkaW9tYSAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnVWx0aW1hIGFjdHVhbGl6YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBEaW7DoW1pY29zIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBpbmRpY2EgZWwgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ8KhTm8gc2UgcHVlZGUgY2FyZ2FyIExhbmd1YWplT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfCoVNpbiByZXN1bHRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnVWx0aW1vIGNhbWJpbyBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIGNyZWFkbyAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0FydGljdWxvIGRlIGxhcyBGQVEgY3JlYWRvIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIG1vZGlmaWNhZG8gKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIG1vZGlmaWNhZG8gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdNYXlvciBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ01heW9yIHF1ZSBpZ3VhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ01lbm9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3IgcXVlIGlndWFsZXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnwqFOZWNlc2l0YSBGaWxlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ8KhR3JhY2lhcyBwb3Igc3Ugdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfCoVVzdGVkIHlhIGhhIHZvdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfCoUVsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gbm8gZXN0w6EgaGFiaWxpdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICfCoUxhIHRhc2EgZGUgdm90YWNpw7NuIG5vIGVzdMOhIGRlZmluaWRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBlbCBhcnTDrWN1bG8gZGUgbGFzIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0NyZWFkbyBlbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfCoU5lY2VzaXRhIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydMOtY3Vsb3MgZGUgbGFzIEZBUSAgKG51ZXZvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydMOtY3Vsb3MgZGUgbGFzIEZBUSAgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydMOtY3Vsb3MgZGUgbGFzIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2luYWRvIGVsIHRpcG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ8KhRWwgdGlwbyBkZWJlIHNlciBMYXN0Q3JlYXRlIG8gTGFzdENoYW5nZSBvIFRvcDEwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ8KhTm8gc2UgcHVlZGUgY3JlYXIgYXJjaGl2byBSU1MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChUZXh0byBjb21wbGV0byBGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnRlICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBDbGllbnRlIChUZXh0byBjb21wbGV0byBGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFB1YmxpY28gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBQdWJsaWNvIChUZXh0byBjb21wbGV0byBGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ8KhTmVjZXNpdGEgdGFzYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ8KhRXN0ZSBhcnTDrWN1bG8gZXN0YSB2YWPDrW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydMOtY3Vsb3MgZGUgbGFzIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydMOtY3Vsb3MgZGUgbGFzIEZBUSBtb2RpZmljYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlIGxvcyBhcnTDrWN1bG9zIGRlIGxhcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkZSBjb250ZW5pZG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnQWNlcHRhcic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdGaWx0cm8gcGFyYSBlbCBIVE1MIHJlc3VsdGFudGUgcGFyYSBhw7FhZGlyIGVubGFjZXMgYSB1bmEgY2FkZW5hIGRldGVybWluYWRhLiBFbCBlbGVtZW50byBJbWFnZW4gY29udGVtcGxhIGRvcyB0aXBvcyBkZSByZWdpc3Ryb3MuIEVsIHByaW1lcm8gZXMgZWwgbm9tYnJlIGRlIHVuYSBpbWFnZW4gKHBvciBlamVtcGxvIGZhcS5wbmcpLiBFbiBlc3RlIGNhc28gc2UgdXRpbGl6YXLDoSBsYSBydXRhIGRlIGltw6FnZW5lcyBkZSBPVE9CTy4gTGEgc2VndW5kYSBwb3NpYmlsaWRhZCBlcyBpbnNlcnRhciBlbCBlbmxhY2UgYSBsYSBpbWFnZW4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDb2xvciBDU1MgcGFyYSBlbCByZXN1bHRhZG8gZGUgbGEgdm90YWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnVGllbXBvIGRlIHZpZGEgZGUgbGEgY2FjaMOpIHBhcmEgbG9zIGVsZW1lbnRvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBsYXMgQ2F0ZWdvcsOtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICdHZXN0acOzbiBkZSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgcmVsYWNpb25hZG9zIGNvbiBsYXMgcHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGVsIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnQXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgY29uIGxhcyBwcmVndW50YXMgZnJlY3VlbnRlcyBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnVmlzdGEgZGV0YWxsYWRhIGRlIGxhcyBGQVEgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnQnVzY2FyIEZBUSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0ZBUSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTsO6bWVybyBkZSBkZWNpbWFsZXMgcGFyYSBlbCByZXN1bHRhZG8gZGUgbGEgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21icmUgcHJlZGV0ZXJtaW5hZG8gZGUgbGEgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gbW9kbyBpZGlvbWEgw7puaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBwb3IgZGVmZWN0byBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBvIHBvciBkZWZlY3RvIGRlIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1ZhbG9yIHBvciBvbWlzacOzbiBwYXJhIGVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgcGFyYSBsYSBpbnRlcmZheiBww7pibGljYS4gRWwgcGFyw6FtZXRybyAiQWN0aW9uIiBzZSB1c2EgZW4gbG9zICJzY3JpcHRzIiBkZWwgc2lzdGVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgYWNjaW9uZXMgZG9uZGUgZXN0w6EgZGlzcG9uaWJsZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIGFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0RldGVybWluYSBzaSBlbCB0w610dWxvIGRlIEZBUSBkZWJlIHNlciBjb25jYXRlbmFkbyBhbCBhc3VudG8gZGVsIGFydMOtY3Vsby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIERpYXJpbyBkZSBsYXMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSBwcmV2aWEgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuIGxpc3RhZG8gZGUgRkFRcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RFZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBGQVEgcXVlIHNlIHVzYXLDoSBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsYXMgRkFRIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogTG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyBtw6FzIHJlY2llbnRlcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIEZBUSBhIG1vc3RyYXIgcG9yIG9taXNpw7NuIHBhcmEgbGEgcGFudGFsbGEgZGUgYnVzcXVlZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmUgbGEgaW5mb3JtYWNpw7NuIGEgc2VyIGluc2VydGFkYSBlbiB1biB0aWNrZXQgYmFzYWRvIGVuIHVuYSBGQVEuICJGQVEgQ29tcGxldGEiIGluY2x1eWUgdGV4dG8sIGFyY2hpdm9zIGFkanVudG9zIGUgaW3DoWdlbmVzIGVuIGxpbmVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBhcmFtZXRyb3MgcGFyYSBlbCBiYWNrZW5kIGRlbCBwYW5lbCBwcmluY2lwYWwuICJMaW1pdGUiIGVzIGVsIG7Dum1lcm8gZGUgZW50cmFkYSBtb3N0cmFkYXMgcG9yIGRlZmVjdG8uICJHcnVwbyIgZXMgdXNhZG8gcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKEVqLiBHcnVwbzogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmZWN0byIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlcyBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyBuZWNlc2l0YSBoYWJpbGl0YXJsbyBtYW51YWxtZW50ZS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCBEaWFyaW8gZGUgbGFzIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmUgZG9uZGUgc2Vyw6EgbW9zdHJhZG8gZWwgbGluayBcJ0luc2VydGFyIEZBUVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljacOzbiBkZWwgY2FtcG8gwqt0ZXh0byBsaWJyZcK7IHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdCb3JyYXIgZXN0ZSBhcnTDrWN1bG8gZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBhw7FhZGlyIFByZWd1bnRhcyBGcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIHJlc3VtZW4gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgcmVzdW1lbiBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGltcHJlc2nDs24gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSByZXN1bWVuIGRlIGZvcm1hdG8gcmVkdWNpZG8gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGV0YWxsZSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZXRhbGxlIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgZGV0YWxsZSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgY2FyYWN0ZXLDrXN0aWNhIGFydMOtY3VsbyByZWxhY2lvbmFkbyBwYXJhIGxhIHBhbnRhbGxhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnSGFiaWxpdGFyIGVsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ1Jlc3BvbmRlZG9yIEFKQVggZGUgIFByZWd1bnRhcyBmcmVjdWVudGVzICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ1Jlc3BvbmRlZG9yIEFKQVggcGFyYSBSaWNodGV4dCBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ8OBcmVhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfDgXJlYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnQm9ycmFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGVsIERpYXJpbyBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRW5jYW1pbmFkb3IgcGFyYSBsYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgY29tcGxldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBvIHBhcmEgbGEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdG9yaWEgZGUgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGVsIG5vbWJyZSBkZSBjYWRhIGNhbXBvIGVuIGxvcyB0aWNrZXRzIGJhc2Fkb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZG9uZGUgZGViZXLDoSBzZXIgbW9zdHJhZGEgbGEgYsO6c3F1ZWRhIHLDoXBpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdEaWFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIElkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdHZXN0acOzbiBkZWwgbGVuZ3VhamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnTMOtbWl0ZSBsYSBiw7pzcXVlZGEgcGFyYSBjcmVhciBsYSBsaXN0YSBkZSBwYWxhYnJhcyBjbGF2ZSBkZSBsYSBsaXN0YSBhcnTDrWN1bG8gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0VubGF6YXIgb3RybyBvYmplY3RvIGEgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgZGUgbm9tYnJlcyBkZSBjb2xhcyBwYXJhIGxvcyBxdWUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFydMOtY3VsbyByZWxhY2lvbmFkbyBlc3TDoSBoYWJpbGl0YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkZSB0aXBvcyBkZSBlc3RhZG8gcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmFjZSBkZSBhZ2VudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkZSB0aXBvcyBkZSBlc3RhZG8gcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmFjZSBkZSBjbGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRlIHRpcG9zIGRlIGVzdGFkbyBxdWUgcHVlZGVuIHNlciB1c2Fkb3MgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gY2FyZ2Fkb3IgcGFyYSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIGRlIGxhcyAgRkFRIGEgbW9zdHJhciBlbiBlbCBEaWFyaW8gZGUgbGFzIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGUgYWdlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlIGNsaWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgYnVzY2Fkb3IgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZSBhZ2VudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgYnVzY2Fkb3IgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZSBjbGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBidXNjYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlIGxvcyB0w610dWxvcyBlbiB1biBhcnTDrWN1bG8gRkFRIHF1ZSBzZXJhIG1vc3RyYWRvIGVuIGVsIERpYXJpbyBkZSBsYXMgRkFRLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVsIHBlcmZpbCBkZSBIVE1MIE9wZW5TZWFyY2ggcGFyYSBsYSBiw7pzcXVlZGEgZGUgcHJlZ3VudGFzIGZyZWN1ZW50ZXMgZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlIGxvcyB0w610dWxvcyBlbiB1biBhcnTDrWN1bG8gRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIGpvdXJuYWwgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgUGVyZmlsIGh0bWwgZGUgT3BlblNlYXJjaCBwYXJhIGLDunNxdWVkYSBkZSBwcmVndW50YXMgZnJlY3VlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ051ZXZvIGFydMOtY3VsbyBkZSBQcmVndW50YXMgZnJlY3VlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTG9zIG51ZXZvcyBhcnTDrWN1bG9zIEZBUSByZXF1aWVyZW4gYXByb2JhY2nDs24gYW50ZXMgZGUgcHVibGljYXJzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBjYWRhIHDDoWdpbmEgZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY2FtYmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY3JlYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnRmlsdHJvIGRlIHNhbGlkYSBwYXJhIGFncmVnYXIgSmF2YS1zY3JpcHQgIGEgbGEgcGFudGFsbGEgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdMw61taXRlIGRlIHNhbGlkYSBwYXJhIGFydMOtY3Vsb3MgZGUgcHJlZ3VudGFzIGZyZWN1ZW50ZXMgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIEZBUSkgZGUgbGEgdmlzdGEgZ2VuZXJhbCBwZXF1ZcOxYSBkZWwgRGlhcmlvIGRlIGxhcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIHB1YmxpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnVmlzdGEgZGV0YWxsYWRhIGRlIGxhcyBGQVEgUHVibGljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ0J1c2NhciBGQVEgUHVibGljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIFB1YmxpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgbGEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1BvbmRlcmFjacOzbiBwYXJhIGxhIHZvdGFjacOzbi4gTGEgY2xhdmUgZGViZSBleHByZXNhcnNlIGVuIHBvcmNlbnRhamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdCw7pzcXVlZGEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnQsO6c3F1ZWRhIHBlcXVlw7FhIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0LDunNxdWVkYSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgY3XDoW50b3MgZWxlbWVudG9zIHNlIGRlYmVuIG1vc3RyYXIgZW4gbGEgRGVzY3JpcGNpw7NuIGdlbmVyYWwgZGUgbGEgcmV2aXN0YSAiUGVxdWXDsW8iIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgY3XDoW50b3MgZWxlbWVudG9zIHNlIGRlYmVuIG1vc3RyYXIgZW4gZWwgcmVzdW1lbiAiUGVxdWXDsW8iIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIHByZWRldGVybWluYWRhIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQ3VzdG9tZXJGQVFab29tICh5IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBtw6F4aW1hIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQWdlbnRGQVFab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIGVubGFjZSBhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byB5IGVubGFjZSBhIEZBUcK7IC8gwqtJbnNlcnRhciBGQVEgY29tcGxldG8geSBlbmxhY2XCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIEFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7NuIMKrSW5zZXJ0YXIgdGV4dG8gRkFRwrsgLyDCq0luc2VydGFyIEZBUSBjb21wbGV0b8K7IGVuIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfCv01vc3RyYXIgY29udGVuaWRvIEhUTUwgZW4gbG9zIGFydMOtY3Vsb3MgRkFRPy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnwr9Nb3N0cmFyIGxhIHJ1dGEgZGUgbGEgRkFRPyBzw60vbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhciBlbGVtZW50b3Mgbm8gdsOhbGlkb3MgZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIGRlIGxhcyBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICdNb3N0cmFyIGxhcyBlc3RyZWxsYXMgcGFyYSBsb3MgYXJ0w61jdWxvcyBjb24gdW5hIGNhbGlmaWNhY2nDs24gaWd1YWwgbyBzdXBlcmlvciBhbCB2YWxvciBkZWZpbmlkbyAoYWp1c3RlIGVsIHZhbG9yIFwnMFwnIHBhcmEgZGVzYWN0aXZhciBsYSBzYWxpZGEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3MgYXJ0w61jdWxvcyBUb3AgMTAgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsYSB2b3RhY2nDs24gZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGVubGF6YXIgYSB1biBhcnTDrWN1bG8gRkFRIGNvbiBvdHJvIG9iamV0byBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBlc2EgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgYm9ycmFyIHVuIGFydMOtY3VsbyBGQVEgZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSByZXRyb2NlZGVyIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHVjacOzbiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1PDrW50b21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ1NvbG8gdGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTG9zIGxlbmd1YWplcyBwb3IgZGUgZGVmZWN0byBkZSBsb3MgYXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgcGFyYSB1bmEgRkFRLCBwb3IgZWplbXBsbyBGQVEjLCBLQiMsIE1pRkFRIy4gRWwgdmFsb3IgcHJlZGV0ZXJtaW5hZG8gZXMgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtGQVHCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrTm9ybWFswrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtGQVHCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrUGFyZW50Q2hpbGTCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtUaWNrZXTCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrTm9ybWFswrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtUaWNrZXTCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrUGFyZW50Q2hpbGTCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0N1ZXJwbyBkZWwgdGlja2V0IHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdBc3VudG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnQXJ0w61jdWxvIGRlIGxhIGJhcnJhIGRlIGhlcnJhbWllbnRhcyBwYXJhIHVuIGFjY2VzbyBkaXJlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdww7pibGljbyAocMO6YmxpY28pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnUGFsYWJyYXMgQ2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZSByZXF1aWVyZSB1bmEgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvYmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjYXRlZ29yw61hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgQ2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgQ2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQcOxYWRpciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWJjYXRlZ29yw61hIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yLCBzZWxlY2Npb25lIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwb3MgZGUgYWdlbnRlcyBxdWUgcHVlZGVuIGFjY2VkZXIgYSBsb3MgYXJ0w61jdWxvcyBkZSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlIG1vc3RyYXLDoSBjb21vIGNvbWVudGFyaW8gZW4gZWwgZXhwbG9yYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ8K/U2VndXJvIHF1ZSBkZXNlYSBib3JyYXIgZXN0YSBjYXRlZ29yw61hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIGNhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgbG9zIHNpZ3VpZW50ZXMgYXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIHN1YmNhdGVnb3LDrWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ8K/U2VndXJvIHF1ZSBkZXNlYSBib3JyYXIgZXN0ZSBhcnTDrWN1bG8gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBSw6FwaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdTZSBwZXJtaXRlbiBjb21vZGluZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBBdmFuemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcsOtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBzdWJjYXRlZ29yw61hcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZWwgSGlzdG9yaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdGZWNoYSBkZSBjcmVhY2nDs24gJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGxhIEJpdMOhY29yYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRvciBJZGlvbWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3RhIGZ1bmNpb25hbGlkYWQgc2kgZGVzZWEgdHJhYmFqYXIgY29uIG11bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGFyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGUgaWRpb21hLiBFc3TDoSBzaWVuZG8gdXNhZG8gcG9yIGFsIG1lbm9zIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSBlc3RhIHNpZW5kbyB1c2FkbyBwb3IgbG9zIHNpZ3VpZW50ZXMgQXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBanVzdGVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydMOtY3Vsb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYWJyYSBjbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90byAoZS5nLiBJZ3VhbCBhIDEwIG8gTWF5b3JRdWUgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1ZhbG9yYWNpw7NuIChlLmcuIElndWFsIGEgMjUlIG8gTWF5b3JRdWUgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0Fwcm9iYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbW8gY2FtYmlvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdUaWVtcG8gZGUgQ3JlYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdUaWVtcG8gZGUgTW9kaWZpY2FjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBNb2RpZmljYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dG8gY29tcGxldG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1NlbGVjY2nDs24gZGUgcGVyZmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdTaW4gY29uZmlndXJhY2nDs24gZGUgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnVm90b3MgZXNwZWPDs2lmaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdlLmcuIElndWFsIGEgMTAgbyBNYXlvclF1ZSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnVmFsb3JhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1NpbiBjb25maWd1cmFjacOzbiBkZSB2YWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnVmFsb3JhY2nDs24gZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdlLmcuIElndWFsIGEgMjUlIG8gTWF5b3IgUXVlIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1RpZW1wbyBkZSBjcmVhY2nDs24gZGVsIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdUaWVtcG8gZGUgbW9kaWZpY2FjacOzbiBkZWwgYXJ0w61jdWxvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1B1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnwqFObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTm8gc2UgZW5jb250csOzIG5pbmfDum4gdm90by4gU2VhIGVsIHByaW1lcm8gZW4gdmFsb3JhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0Rlc2NhcmdhciBBZGp1bnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGFyYSBhYnJpciBsb3MgZW5sYWNlcyBkZSBsYXMgc2lndWllbnRlcyBkZXNjcmlwY2lvbmVzLCBwdWVkZSBuZWNlc2l0YXIgcHJlc2lvbmFyIGxhIHRlY2xhIEN0cmwsIENtZCBvIFNoaWZ0IG1pZW50cmFzIGhhY2UgY2xpYyBlbiBlbCBlbmxhY2UgKGRlcGVuZGllbmRvIGRlbCBuYXZlZ2Fkb3IgeSBTTyBxdWUgZXN0w6kgdXRpbGl6YW5kbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfCv0PDs21vIGRlIMO6dGlsIGZ1ZSBlc3RlIGFydMOtY3Vsbz8gUG9yIGZhdm9yLCBkw6lub3Mgc3UgcHVudHVhY2nDs24geSBheXVkZSBhIG1lam9yYXIgbGEgYmFzZSBkZSBkYXRvcyBkZSBGQVEuIEdyYWNpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncG9jbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdXkgw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FncmVnYXIgZWwgdMOtdHVsbyBkZWwgRkFRIGFsIGFzdW50byBkZWwgYXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VydGFyIFRleHRvIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbnNlcnRhciBGQVEgQ29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJ0YXIgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcnRhciB0ZXh0byB5IEVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgRkFRIENvbXBsZXRvICYgRW5sYWNlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdFc3RvIHBvZHLDrWEgc2VyIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiByZWN1cnNvcyDDunRpbGVzIHBhcmEgZWwgYXN1bnRvIHkgdGV4dG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdFc2NyaWJhIHVuIGFzdW50byBvIHRleHRvIHBhcmEgb2J0ZW5lciB1bmEgbGlzdGEgZGUgcmVjdXJzb3Mgw7p0aWxlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnw5puaWNhbWVudGUgYXJ0w61jdWxvcyBGQVEgY29uIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY2Npb25lcyBkZSB2YWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdTb2xvIGFydMOtY3Vsb3MgRkFRIGNvbiB2YWxvcmFjacOzbi4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICfDum5pY2FtZW50ZSBhcnTDrWN1bG9zIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ8OabmljYW1lbnRlIGFydMOtY3Vsb3MgRkFRIGNyZWFkb3MgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnwr9QZXJmaWwgZGUgYsO6c3F1ZWRhIGNvbW8gcGxhbnRpbGxhPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgQXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQnVzY2FyIGFydMOtY3Vsb3MgY29uIGxhIHBhbGFicmEgY2xhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1JlZ3Jlc2FyIGFsIEV4cGxvcmFkb3IgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdSZXF1aXJlIHBlcm1pc28gcnchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBjYXRlZ29yw61hcyBkb25kZSBlbCB1c3VhcmlvIHRlbmdhIHBlcm1pc29zIGRlIGxlY3R1cmEvZXNjcml0dXJhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdObyBzZSBlbmNvbnRyw7MgZWwgaWRpb21hIHBvciBvbWlzacOzbiB5IG5vIHNlIHB1ZWRlIGNyZWFyIHVubyBudWV2by4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdTZSBuZWNlc2l0YSBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfCoUxhcyBjYXRlZ29yw61hcyBkZWJlIHRlbmVyIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfDiXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ05vIGZ1ZSBwb3NpYmxlIGJvcnJhciBsYSBjYXRlZ29yw61hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdBY3R1YWxpemFkYSBjYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnQcOxYWRpZGEgY2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIGNhdGVnb3LDrWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnVXN0ZWQgbm8gdGllbmUgcGVybWlzb3MgcGFyYSBlc3RhIGNhdGVnb3LDrWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ05vIGZ1ZSBwb3NpYmxlIGVsaW1pbmFyIGVsIGFydMOtY3VsbyBGQVEgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0VsIENhdGVnb3J5SUQgJXMgZXMgaW52w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIHlhIHF1ZSBubyBzZSBoYSBkYWRvIHVuIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0b3JpYWwgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnQml0w6Fjb3JhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdTZSByZXF1aWVyZSBsYSBvcGNpw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ8KhTGEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWNlc2l0YSBzZXIgdW5hIHJlZmVyZW5jaWEgYSB1biBIQVNIISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ8KhTm8gc2UgZW5jb250csOzIGxhIG9wY2nDs24gZGUgY29uZmlndXJhY2nDs24gcGFyYSBsYSB2aXN0YSAiMSVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyB1biBMYW5ndWFnZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdFbCBub21icmUgZXMgaW1wcmVzY2luZGlibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0ZSBpZGlvbWEgeWEgZXhpc3RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdObyBzZSBoYSBwb2RpZG8gZWxpbWluYXIgZWwgaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdBY3R1YWxpemFkbyBpZGlvbWEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQcOxYWRpZG8gaWRpb21hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdCb3JyYXIgSWRpb21hICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfDmmx0aW1hIEFjdHVhbGl6YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBEaW7DoW1pY29zIHBhcmEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdObyBwdWVkZSBjYXJnYXJzZSBlbCBMYW5ndWFnZU9iamVjdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnU2luIFJlc3VsdGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBDYW1iaW8gcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBBY3R1YWxpemFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBBY3R1YWxpemFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ0lndWFsIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnTWF5b3IgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdNYXlvciBvIGlndWFsIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICdNZW5vciBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ01lbm9yIG8gaWd1YWwgcXVlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ1NlIG5lY2VzaXRhIEZpbGVJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnwqFHcmFjaWFzIHBvciBzdSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ8KhVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ8KhTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5pbmd1bmEgcHVudHVhY2nDs24hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ0VsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gbm8gZXN0w6EgaGFiaWxpdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdMYSBwcm9wb3JjacOzbiBkZSB2b3RhY2nDs24gbm8gZXN0w6EgZGVmaW5pZGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGVsIGFydMOtY3VsbyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdDcmVhZG8gZW5ydHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ1NlIG5lY2VzaXRhIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydMOtY3Vsb3MgRkFRIChudWV2b3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobW9kaWZpY2Fkb3MgcmVjaWVudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnRWwgVGlwbyBkZWJlIHNlciBMYXN0Q3JlYXRlIExhc3RDaGFuZ2UgbyBUb3AxMCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ05vIHNlIHB1ZWRlIGNyZWFyIGVsIGFyY2hpdm8gUlNTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJzElcyAoRkFRVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIENsaWVudGUgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcxJXMgLSBDbGllbnRlIChGQVFUZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQw7pibGljbyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcxJXMgLSBQw7pibGljbyAoRkFRVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnwqFSZXF1aWVyZSB2YWxvcmFjacOzbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0VzdGUgYXJ0w61jdWxvIGVzdGEgdmFjacOzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfDmmx0aW1vcyBhcnTDrWN1bG9zIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydMOtY3Vsb3MgRkFRIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkZSBDb250ZW5pZG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnQWNlcHRhcic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdGaWx0cm8gcGFyYSBlbCBIVE1MIHJlc3VsdGFudGUgcGFyYSBhw7FhZGlyIGVubGFjZXMgYSB1bmEgY2FkZW5hIGRldGVybWluYWRhLiBFbCBlbGVtZW50byBJbWFnZW4gY29udGVtcGxhIGRvcyB0aXBvcyBkZSByZWdpc3Ryb3MuIEVsIHByaW1lcm8gZXMgZWwgbm9tYnJlIGRlIHVuYSBpbWFnZW4gKHBvciBlamVtcGxvIGZhcS5wbmcpLiBFbiBlc3RlIGNhc28gc2UgdXRpbGl6YXLDoSBsYSBydXRhIGRlIGltw6FnZW5lcyBkZSBPVE9CTy4gTGEgc2VndW5kYSBwb3NpYmlsaWRhZCBlcyBpbnNlcnRhciBlbCBlbmxhY2UgYSBsYSBpbWFnZW4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29sb3IgQ1NTIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1RpZW1wbyBkZSB2aWRhIGRlIGxhIGNhY2jDqSBwYXJhIGxvcyBlbGVtZW50b3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgbGFzIENhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnR2VzdGnDs24gZGUgQ2F0ZWdvcsOtYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgZGVsIENsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnQXJ0w61jdWxvcyBGQVEgUmVsYWNpb25hZG9zIFBhcmEgTG9zIENsaWVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ0FydMOtY3Vsb3MgRkFRIFJlbGFjaW9uYWRvcyBQYXJhIExvcyBDbGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnRGV0YWxsZSBGQVEgZGVsIENsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnQsO6c3F1ZWRhIEZBUSBkZWwgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0ZBUSBkZWwgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTsO6bWVybyBkZSBkZWNpbWFsZXMgcGFyYSBlbCByZXN1bHRhZG8gZGUgbGEgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21icmUgcHJlZGV0ZXJtaW5hZG8gZGUgbGEgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnSWRpb21hIHBvciBvbWlzacOzbiBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBtb2RvIGlkaW9tYSDDum5pY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnTcOheGltbyB0YW1hw7FvIHBvciBkZWZlY3RvIGEgbW9zdHJhciBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBvIHBvciBkZWZlY3RvIGRlIGxvcyB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIEFjY2lvbmVzIGRvbmRlIGVsIGJvdMOzbiBkZSBjb25maWd1cmFjaW9uZXMgZXN0YSBkaXNwb25pYmxlIGVuIGVsICJ3aWRnZXQiIGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQb3IgZmF2b3Igbm90ZSBxdWUgZGljaGFzIEFjY2lvbmVzIGRlYmVuIHRlbmVyIHJlZ2lzdHJhZG9zIGxvcyBzaWd1aWVudGVzIGFyY2hpdm9zIEpTIHkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBlbCB0w610dWxvIGRlbCBGQVEgZGViZSBlc3RhciBjb25jYXRlbmFkbyBhbCBhc3VudG8gZGVsIGFydMOtY3Vsby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGN1YWxlcyBjb2x1bW5hcyBzZXLDoW4gbW9zdHJhZGFzIGVuIGVsICJ3aWRnZXQiIGRlIEZBUSB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGE6IFNvbGFtZW50ZSBhdHJpYnV0b3MgZGUgRkFRIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9Ob21icmVYKSBzb24gcGVybWl0aWRvcyBwYXJhIGNvbHVtbmFzIHBvciBvbWlzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgZ2VuZXJhbCBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgbGEgYml0w6Fjb3JhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSBwcmV2aWEgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuIGxpc3RhZG8gZGUgRkFRcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RFZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBGQVEgcXVlIHNlIHVzYXLDoSBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsYXMgRkFRIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogTG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyBtw6FzIHJlY2llbnRlcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIEZBUSBtb3N0cmFkbyBwb3IgZGVmZWN0byBlbiBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmUgbGEgaW5mb3JtYWNpw7NuIGEgaW5zZXJ0YXIgZW4gdW4gRkFRIGJhc2FkbyBlbiB1biB0aWNrZXQuICJGQVEgY29tcGxldG8iIGluY2x1eWUgdGV4dG8sIGFkanVudG9zIGUgaW3DoWdlbmVzIGluY3J1c3RhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBhcsOhbWV0cm9zIHBhcmEgZWwgYmFja2VuZCBkZWwgcGFuZWwgcHJpbmNpcGFsLiAiTGltaXQiIGRlZmluZSBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdyb3VwIiBzZSB1c2EgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMjspLiAiRGVmYXVsdCIgaW5kaWNhIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyBuZWNlc2l0YSBoYWJpbGl0YXJsbyBtYW51YWxtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCBFeHBsb3JhZG9yIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGxhIGJpdMOhY29yYSBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGxhIGLDunNxdWVkYSBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5pciBkb25kZSBzZXLDoSBtb3N0cmFkbyBlbCBlbmxhY2UgXCdJbnNlcnRhciBGQVFcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljacOzbiBkZWwgY2FtcG8gwqt0ZXh0byBsaWJyZcK7IHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdCb3JyYXIgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSB2aXN0YSBnZW5lcmFsIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIHZpc3RhIGdlbmVyYWwgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSB2aXN0YSBnZW5lcmFsIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGltcHJlc2nDs24gZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgdmlzdGEgZ2VuZXJhbCBkZSBGQVEgZW4gZm9ybWF0byBwZXF1ZcOxbyBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgZGV0YWxsZSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGRldGFsbGUgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGRldGFsbGUgZGUgRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdGFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnSGFiaWxpdGFyIG3Dumx0aXBsZXMgaWRpb21hcyBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICdIYWJpbGl0YXIgbGEgZnVuY2lvbmFsaWRhZCBkZSBhcnTDrWN1bG9zIHJlbGFjaW9uYWRvcyBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdIYWJpbGl0YXIgZWwgbWVjYW5pc21vIGRlIHZvdGFjacOzbiBlbiBlbCBtw7NkdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnUmVzcG9uZGVkb3IgQUpBWCBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnUmVzcG9uZGVkb3IgQUpBWCBkZSBGQVEgcGFyYSB0ZXh0byBlbnJpcXVlY2lkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdBcmVhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfDgXJlYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnQm9ycmFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBsYSBCaXTDoWNvcmEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRW5jYW1pbmFkb3IgcGFyYSBsYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgQ29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSBkZSBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgY2FtcG9zIGludGVybm9zIGVuIGxvcyB0aWNrZXRzIGJhc2Fkb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgZWwgbm9tYnJlIGRlIGNhZGEgY2FtcG8gZW4gbG9zIHRpY2tldHMgYmFzYWRvcyBlbiB1biBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBkb25kZSBzZSBkZWJlIG1vc3RyYXIgbGEgYsO6c3F1ZWRhIHLDoXBpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdCaXTDoWNvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIElkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdHZXN0acOzbiBkZSBJZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ0zDrW1pdGUgZGUgbGEgYsO6c3F1ZWRhIHBhcmEgY29uc3RydWlyIGVsIGxpc3RhZG8gZGUgcGFsYWJyYXMgY2xhdmUgZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0VubGF6YXIgb3RybyBvYmplY3RvIGEgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgZGUgbm9tYnJlcyBkZSBmaWxhcyBwYXJhIGxhcyBjdWFsZXMgbGEgZnVuY2lvbmFsaWRhZCBkZSBhcnTDrWN1bG9zIHJlbGFjaW9uYWRvcyBlc3TDoSBoYWJpbGl0YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBsb3MgdGlwb3MgZGUgZXN0YWRvcyBxdWUgcHVlZGVuIHNlciB1c2Fkb3MgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgbG9zIHRpcG9zIGRlIGVzdGFkb3MgcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgbG9zIHRpcG9zIGRlIGVzdGFkb3MgcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGUgbcOzZHVsbyAiTG9hZGVyIiBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbGEgYml0w6Fjb3JhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZWwgdMOtdHVsbyBlbiB1biBhcnTDrWN1bG8gIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBFeHBsb3JhZG9yIGRlIEZBUXMgcXVlIHNlIG11ZXN0cmEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGFsIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgQnVzY2Fkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgQnVzY2Fkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZWwgdMOtdHVsbyBlbiB1biBhcnTDrWN1bG8gIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBCdXNjYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGFsIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlbCB0w610dWxvIGVuIHVuIGFydMOtY3VsbyAgRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIERpYXJpbyBkZSBOYXZlZ2FjacOzbiBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgbGEgYsO6c3F1ZWRhIHLDoXBpZGEgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIEhUTUwgT3BlblNlYXJjaCBwYXJhIGxhIGLDunNxdWVkYSBjb3J0YSBkZSBsYXMgRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlbCBwZXJmaWwgaHRtbCAiT3BlblNlYXJjaCIgcGFyYSBsYSBiw7pzcXVlZGEgcsOhcGlkYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICdOdWV2byBBcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdMb3MgbnVldm9zIGFydMOtY3Vsb3MgRkFRIHJlcXVpZXJlbiBhcHJvYmFjacOzbiBhbnRlcyBkZSBwdWJsaWNhcnNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBjYWRhIHDDoWdpbmEgZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGNhZGEgcMOhZ2luYSBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ07Dum1lcm8gZGUgZWxlbWVudG9zIGEgbW9zdHJhciBlbiDDumx0aW1vcyBjYW1iaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ07Dum1lcm8gZGUgZWxlbWVudG9zIGEgbW9zdHJhciBlbiDDumx0aW1vcyBjcmVhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ07Dum1lcm8gZGUgZWxlbWVudG9zIGEgbW9zdHJhciBlbiBlbCBUb3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICdGaWx0cm8gZGUgc2FsaWRhIHBhcmEgYWdyZWdhciBKYXZhLVNjcmlwdCBhIGxhIHBhbnRhbGxhIEN1c3RvbWVyVGlja2V0TWVzc2FnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTMOtbWl0ZSBkZSBkZXNwbG9tZSBkZSBhcnTDrWN1bG9zIEZBUSByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIFDDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdEZXRhbGxlIEZBUSBQw7pibGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICdCw7pzcXVlZGEgRkFRIFDDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIFDDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBsYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnUG9uZGVyYWNpw7NuIHBhcmEgbGEgdm90YWNpw7NuLiBMYSBjbGF2ZSBkZWJlIGV4cHJlc2Fyc2UgZW4gcG9yY2VudGFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0LDunNxdWVkYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICdCw7pzcXVlZGEgcGVxdWXDsWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnQsO6c3F1ZWRhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjY2lvbmFyIGN1w6FudG9zIGVsZW1lbnRvcyBkZWJlcsOhbiBzZXIgbW9zdHJhZG9zIGVuIGxhIHZpc3RhIGxhIHZpc3RhIGdlbmVyYWwgZGVsIGRpYXJpbyAicGVxdWXDsW8iIHBvciBvbWlzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdTZWxlY2Npb25hciBjdcOhbnRvcyBlbGVtZW50b3MgZGViZXLDoW4gc2VyIG1vc3RyYWRvcyBlbiBsYSB2aXN0YSBsYSB2aXN0YSBnZW5lcmFsICJwZXF1ZcOxYSIgcG9yIG9taXNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIHByZWRldGVybWluYWRhIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQ3VzdG9tZXJGQVFab29tICh5IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBtw6F4aW1hIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQWdlbnRGQVFab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIGVubGFjZSBhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3RvbmVzICJJbnNlcnRhciBUZXh0byB5IEVubGFjZSBkZSBsYSBGQVEiIC8gIkluc2VydGFyIEZBUSBDb21wbGV0YSB5IEVubGFjZSIgZW4gQWdlbnRGQVFab29tU21hbGwgcGFyYSBsYXMgZW50cmFkYXMgcMO6YmxpY2FzIGRlIGxhcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdNb3N0cmFyIGVsIGJvdMOzbiAiSW5zZXJ0YXIgVGV4dG8gZGUgbGEgRkFRIiAvICJJbnRlcnRhciBGQVEgQ29tcGxldGEiIGVuIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfCv01vc3RyYXIgY29udGVuaWRvIEhUTUwgZW4gbG9zIGFydMOtY3Vsb3MgRkFRPy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnwr9Nb3N0cmFyIGxhIHJ1dGEgZGUgbGEgRkFRPyBzw60vbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhciBlbnRyYWRhcyBpbnbDoWxpZGFzIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBFeHBsb3JhZG9yIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnwr9Nb3N0cmFyIGxvcyBlbGVtZW50b3MgZGUgbGFzIHN1YmNhdGVnb3LDrWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyDDumx0aW1vcyBhcnTDrWN1bG9zIGFjdHVhbGl6YWRvcyBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyDDumx0aW1vcyBhcnTDrWN1bG9zIGNyZWFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbGFzIGVzdHJlbGxhcyBwYXJhIGxvcyBhcnTDrWN1bG9zIGNvbiB1bmEgY2FsaWZpY2FjacOzbiBpZ3VhbCBvIHN1cGVyaW9yIGFsIHZhbG9yIGRlZmluaWRvIChhanVzdGUgZWwgdmFsb3IgXCcwXCcgcGFyYSBkZXNhY3RpdmFyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbG9zIGFydMOtY3Vsb3MgVG9wIDEwIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgbGEgdm90YWNpw7NuIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBlbmxhemFyIGEgdW4gYXJ0w61jdWxvIEZBUSBjb24gb3RybyBvYmpldG8gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGJvcnJhciB1biBhcnTDrWN1bG8gRkFRIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgcmV0cm9jZWRlciBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGFydMOtY3VsbyBGQVEgZW4gc3UgdmlzdGEgYW1wbGlhZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1Y2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1PDrW50b21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ1NvbG8gVGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnSWRpb21hcyBwb3IgZGVmZWN0byBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSByZWxhY2lvbmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgcGFyYSB1bmEgRkFRLCBwb3IgZWplbXBsbyBGQVEjLCBLQiMsIE1pRkFRIy4gRkFRIyBlcyBsYSBvcGNpw7NuIHBvciBvbWlzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byDCq0ZBUcK7IHB1ZWRlIGVubGF6YXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyDCq0ZBUcK7IHV0aWxpemFuZG8gZWwgdGlwbyBkZSBlbmxhY2UgwqtOb3JtYWzCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byDCq0ZBUcK7IHB1ZWRlIGVubGF6YXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyDCq0ZBUcK7IHV0aWxpemFuZG8gZWwgdGlwbyBkZSBlbmxhY2UgwqtQYXJlbnRDaGlsZMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byDCq0ZBUcK7IHB1ZWRlIGVubGF6YXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyDCq1RpY2tldMK7IHV0aWxpemFuZG8gZWwgdGlwbyBkZSBlbmxhY2UgwqtOb3JtYWzCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3RlIGFqdXN0ZSBkZWZpbmUgcXVlIHVuIG9iamV0byDCq0ZBUcK7IHB1ZWRlIGVubGF6YXJzZSBjb24gb3Ryb3Mgb2JqZXRvcyDCq1RpY2tldMK7IHV0aWxpemFuZG8gZWwgdGlwbyBkZSBlbmxhY2UgwqtQYXJlbnRDaGlsZMK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ3VlcnBvIGRlbCB0aWNrZXQgcGFyYSBhcHJvYmFjacOzbiBkZSBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0FzdW50byBkZWwgdGlja2V0IHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdFbGVtZW50byBkZSBsYSBiYXJyYSBkZSBoZXJyYW1pZW50YXMgcGFyYSB1biBhdGFqbyAoc2hvcnRjdXQpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdww7pibGljbyAocMO6YmxpY28pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfYqtin24zbjNivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9iy24zYsSDZhdis2YXZiNi52YfigIzbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfYr9ixIEV4cGxvcmVyINio2Ycg2LXZiNix2Kog24zaqSDZhdiq2YYg2KrZiNi224zYrduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2K7ZiNin2YfZhtivINi02K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ9iz2YjYp9io2YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn2YXYrdiq2YjYp9uMINiz2KfYqNmC2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9iy2YXYp9mGINin24zYrNin2K8gJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAn2KrZhti424zZhdin2Kog2YXZgdin2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfYotiu2LHbjNmGINiq2LrbjNuM2LEg2KjZhyDZiNiz24zZhNmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9ii2LHYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn2K/YsduM2KfZgdiqINm+24zZiNiz2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn2YXYrdiv2YjYr9uM2KrigIzZh9in24wg2LLZhdin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICfZhtiq24zYrNmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9in2LIg2LHYp9uMINi02YXYpyDYs9m+2KfYs9qv2LLYp9ix24zZhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfYtNmF2Kcg2YLYqNmE2Kcg2LHYp9uMINiv2KfYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9in2YXYqtuM2KfYsiDYsdinINin2YbYqtiu2KfYqCDZhtqp2LHYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn2KfYrtio2KfYsSBGQVEgKNis2K/bjNiv2Kcg2KfbjNis2KfYryDYtNiv2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo2KzYr9uM2K/YpyDYqti624zbjNixINuM2KfZgdiq2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9in2K7YqNin2LEgRkFRICjbsduwINiq2KfbjCDYqNix2KrYsSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9ii2K7YsduM2YYg2KfZgtmE2KfZhSDYp9uM2KzYp9ivINi02K/Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfYotiu2LHbjNmGINin2YLZhNin2YUg2KrYudix24zZgSDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ9io2KfZhNin2KrYsduM2YYg27HbsCDZgtmE2YUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn2KrYp9uM24zYryc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMaXPDpMOkIFVLSyBhcnRpa2tlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdIYWt1c2FuYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgb24gcGFrb2xsaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdIeXbDpGtzeW50w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnVUtLIGthdGVnb3Jpb2lkZW4gaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdMaXPDpMOkIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdMaXPDpMOkIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnTXVva2thYSBrYXRlZ29yaWFhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnQWxha2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVmFsaXRzZSBhaW5ha2luIHlrc2kgb2lrZXVzcnlobcOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnR0aXJ5aG3DpHQsIGpvaWxsYSBvbiBww6TDpHN5IGFydGlra2VsZWloaW4gdMOkc3PDpCBrYXRlZ29yaWFzc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ07DpHl0ZXTDpMOkbiBrb21tZW50dGluYSBTZWxhaW1lc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnSGFsdWF0a28gdmFybWFzdGkgcG9pc3RhYSB0w6Rtw6RuIGthdGVnb3JpYW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnRXQgdm9pIHBvaXN0YWEgdMOkdMOkIGthdGVnb3JpYWEhIFNlIHNpc8OkbHTDpMOkIGpva28gYXJ0aWtrZWxlaXRhIHRhaSBzZSBvbiB0b2lzZW4ga2F0ZWdvcmlhbiBpc8OkbnTDpGthdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdTZXVyYWF2YXQgYXJ0aWtrZWxpdCBrdXVsdXZhdCB0w6Row6RuIGthdGVnb3JpYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ07DpG3DpCBrYXRlZ29yaWF0IG92YXQgdMOkbcOkbiBrYXRlZ29yaWFuIGFsYWthdGVnb3Jpb2l0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIHTDpG3DpG4gYXJ0aWtrZWxpbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnVUtLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdTZWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUGlrYWhha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdNb25pcHVvbGluZW4gaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnQWxha2F0ZWdvcmlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnRWkgYWxha2F0ZWdvcmlvaXRhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWE6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1RhcGFodHVtYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0x1b250aWFpa2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1VLSyBraWVsdGVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0xpc8Okw6Qga2llbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTGlzw6TDpCBraWVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnTXVva2thYSBraWVsdMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIHTDpG3DpG4ga2llbGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdFdCB2b2kgcG9pc3RhYSB0w6R0w6Qga2llbHTDpC4gQWluYWtpbiB5a3NpIGFydGlra2VsaSBrw6R5dHTDpMOkIHTDpHTDpCBraWVsdMOkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ1NldXJhYXZhdCBhcnRpa2tlbGl0IGvDpHl0dMOkdsOkdCB0w6R0w6Qga2llbHTDpCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpa2tlbGVpdGEgcGVyIHNpdnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnWWh0w6TDpG4gYXJ0aWtrZWxpYSBlaSBsw7Z5dHlueXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJy8gNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdIYWt1c2FuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdVS0sgaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ1VLSyB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnQXJ2b3N0ZWx1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ8OEw6RuZXN0eWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnRWkgw6TDpG5pw6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdFaSBhbm5ldHR1amEgw6TDpG5pw6QhIMOEw6RuZXN0w6QgdMOkdMOkIGFydGlra2VsaWEgZW5zaW1tw6Rpc2Vuw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdMYXRhYSBsaWl0ZXRpZWRvc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnS3VpbmthIGh5w7ZkeWxsaW5lbiB0w6Rtw6QgYXJ0aWtrZWxpIG9saT8gQXJ2b3N0ZWxlIGFydGlra2VsaSwgam90dGEgdm9pbW1lIGtlaGl0dMOkw6QgVUtLLXRpZXRva2FudGFhbW1lLiBLaWl0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnaHnDtmR5dMO2bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdoecO2ZHlsbGluZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdMaXPDpMOkIFVLSyB0ZWtzdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0xpc8Okw6QgVUtLIGxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTGlzw6TDpCBVS0sgdGVrc3RpIGphIGxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnWWh0w6TDpG4gYXJ0aWtrZWxpYSBlaSBsw7Z5dHlueXQuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnSGFlIGFydGlra2VsZWlzdGEgKGVzaW0uICJNYXR0aSoiIHRhaSAiTWVpaypuZW4iKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ0Fpa2FyYWpvaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdFdHNpIGFydGlra2VsZWphIGhha3VzYW5hbGxhJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ0p1bGtpbmVuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaWFsbGEgdHVsZWUgb2xsYSBuaW1pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnVMOkbcOkIGthdGVnb3JpYSBvbiBqbyBvbGVtYXNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnS2F0ZWdvcmlhIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnS2F0ZWdvcmlhIGxpc8OkdHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQb2lzdGEga2F0ZWdvcmlhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdVS0sgYWlrYWrDpHJqZXN0eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmltaSBvbiBwYWtvbGxpbmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ1TDpG3DpCBraWVsaSBvbiBqbyBvbGVtYXNzYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0tpZWxpIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnS2llbGkgbGlzw6R0dHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnUG9pc3RhIGtpZWxpICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdWYXN0YXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ1VLSyBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdLaWl0b3MgYXJ2b3N0ZWx1c3Rhc2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnT2xldCBqbyBhcnZvc3RlbGx1dCB0w6Rtw6RuIGFydGlra2VsaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnRWkgdmFsaXR0dWEgYXJ2aW90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnVHVsb3N0YSBhcnRpa2tlbGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpa2tlbGkgKHV1ZGV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWtrZWxpIChww6Rpdml0ZXR0eSDDpHNrZXR0w6RpbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtrZWxpdCAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVmlpbWVrc2kganVsa2Fpc3R1dCBhcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1ZpaW1la3NpIHDDpGl2aXRldHl0IGFydGlra2VsaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpa2tlbGl0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnc2lzw6RpbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAndWxrb2luZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnanVsa2luZW4nOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3JpYWhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdTZWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnQWlrYWrDpHJqZXN0eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0tpZWx0ZW4gaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1R1bG9zdGEgYXJ0aWtrZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnUmF0a2Fpc3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICd1bGtvaW5lbiAoYXNpYWtrYWF0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnc2lzw6RpbmVuIChhZ2VudGl0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdqdWxraW5lbiAoa2Fpa2tpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBam91dGVyIHVuIGFydGljbGUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdNb3RzLWNsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW5lIGNhdMOpZ29yaWUgZXN0IHJlcXVpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXV0b3Jpc2F0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGNhdMOpZ29yaWVzIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnQWpvdXRlciB1bmUgY2F0w6lnb3JpZSBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ8OJZGl0ZXIgdW5lIGNhdMOpZ29yaWUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWpvdXRlciB1bmUgY2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBam91dGVyIHVuZSBjYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfDiWRpdGVyIHVuZSBjYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU291cy1jYXTDqWdvcmllIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnTWVyY2kgZGUgc8OpbGVjdGlvbm5lciBhdSBtb2lucyB1biBncm91cGUgZGUgcGVybWlzc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dyb3VwZXMgZFwnYWdlbnRzIHBvdXZhbnQgYWNjw6lkZXIgYXV4IGFydGljbGVzIGRlIGNldHRlIGNhdMOpZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXJhIGFmZmljaMOpIGNvbW1lIHVuIGNvbW1lbnRhaXJlIGRhbnMgbFwnZXhwbG9yYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2V0dGUgY2F0w6lnb3JpZSA/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnVm91cyBuZSBwb3V2ZXogcGFzIHN1cHByaW1lciBjZXR0ZSBjYXTDqWdvcmllLiBFbGxlIGVzdCB1dGlsaXPDqWUgZGFucyBhdSBtb2lucyB1biBhcnRpY2xlIGRlIEZBUSBldC9vdSBlc3QgcGFyZW50ZSBkXCdhdSBtb2lucyB1bmUgYXV0cmUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdDZXR0ZSBjYXTDqWdvcmllIGVzdCB1dGlsaXPDqWUgZGFucyBsZXMgYXJ0aWNsZXMgZGUgRkFRIHN1aXZhbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXN0IHBhcmVudGUgZGVzIHNvdXMtY2F0w6lnb3JpZXMgc3VpdmFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgYXJ0aWNsZSBkZSBsYSBGQVEgPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmF0ZXVyIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgcmFwaWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdMZXMgbcOpdGFjYXJhY3TDqHJlcyBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBhdmFuY8OpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY2xlcyBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdQYXMgZGUgc291cy1jYXTDqWdvcmllcyB0cm91dsOpZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpcXVlIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnUgZGUgbFwnaGlzdG9yaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnUGFzIGRlIGpvdXJuYWwgZGUgZG9ubsOpZXMgdHJvdXbDqSBkYW5zIGxhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgbGFuZ3VlcyBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ8OJZGl0ZXIgdW5lIGxhbmd1ZSBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVdGlsaXNleiBjZXR0ZSBmb25jdGlvbm5hbGl0w6kgYWZpbiBkZSB0cmF2YWlsbGVyIGF2ZWMgcGx1c2lldXJzIGxhbmd1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBam91dGVyIHVuZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ8OJZGl0ZXIgbGEgbGFuZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2V0dGUgbGFuZ3VlID8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVm91cyBuZSBwb3V2ZXogcGFzIHN1cHByaW1lciBjZXR0ZSBsYW5ndWUuIEVsbGUgZXN0IHV0aWxpc8OpZSBkYW5zIGF1IG1vaW5zIHVuIGFydGljbGUgZGUgbGEgRkFRICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdDZXR0ZSBsYW5ndWUgZXN0IHV0aWxpc8OpZSBkYW5zIGxlcyBhcnRpY2xlcyBkZSBsYSBGQVEgc3VpdmFudHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdQYXJhbcOodHJlcyBkdSBjb250ZXh0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdOb21icmUgZFwnYXJ0aWNsZXMgcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnUGFzIGRlIGRvbm7DqWVzIHRyb3V2w6llcyBkYW5zIGxhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3N1ciA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ01vdC1jbMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdWb3RlIChwYXIgZXhlbXBsZSDDqWdhbCDDoCAxMCBvdSBzdXDDqXJpZXVyIMOgIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdUYXV4IChwYXIgZXhlbXBsZSDDqWdhbCDDoCAyNSUgb3Ugc3Vww6lyaWV1ciDDoCA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXBwcm91dsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyBwYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdEYXRlIGRlIGNyw6lhdGlvbiBkZSBsXCdhcnRpY2xlIGRlIGxhIEZBUSAoYXZhbnQvYXByw6hzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRlIGRlIGNyw6lhdGlvbiBkZSBsXCdhcnRpY2xlIGRlIGxhIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgbFwnYXJ0aWNsZSBkZSBsYSBGQVEgKGF2YW50L2FwcsOocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgbFwnYXJ0aWNsZSBkZSBsYSBGQVEgKGVudHJlKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdUZXh0ZSBpbnTDqWdyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTw6lsZWN0aW9uIGR1IHByb2ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnUGFzIGRlIHBhcmFtw6h0cmVzIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RlIHNww6ljaWZpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ3BhciBleGVtcGxlIMOpZ2FsIMOgIDEwIG91IHN1cMOpcmlldXIgw6AgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1RhdXgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1BhcyBkZSByw6lnbGFnZSBkdSB0YXV4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdUYXV4IHNww6ljaWZpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAncGFyIGV4ZW1wbGUgw6lnYWwgw6AgMjUlIG91IHN1cMOpcmlldXIgw6AgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnSGV1cmUgZGUgY3LDqWF0aW9uIGRlIGxcJ2FydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdEYXRlIGRlIG1vZGlmaWNhdGlvbiBkZSBsXCdhcnRpY2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdOb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQXVjdW5zIHZvdGVzIHRyb3V2w6lzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0F1Y3VucyB2b3RlcyAhIFNveWV6IGxlIHByZW1pZXIgw6Agbm90ZXIgY2V0IGFydGljbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdUw6lsw6ljaGFyZ2VyIHVuIGZpY2hpZXIgam9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQb3VyIG91dnJpciBsZXMgbGllbnMgZGFucyBsZXMgYmxvY3MgZGUgZGVzY3JpcHRpb24gc3VpdmFudGVzLCB2b3VzIHBvdXJyaWV6IGF2b2lyIGJlc29pbiBkXCdhcHB1eWVyIHN1ciBDdHJsIG91IENtZCBvdSBNYWogdG91dCBlbiBjbGlxdWFudCBzdXIgbGUgbGllbiAoZW4gZm9uY3Rpb24gZGUgdm90cmUgbmF2aWdhdGV1ciBldCBPUykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnQ2V0IGFydGljbGUgw6l0YWl0LWlsIHV0aWxlID8gTWVyY2kgZGUgZG9ubmVyIHVuZSBub3RlIGV0IGRlIHBhcnRpY2lwZXIgw6AgbFwnYW3DqWxpb3JhdGlvbiBkZSBsYSBiYXNlIGRlIGRvbm7DqWVzLiBNZXJjaSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncGV1IHV0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3Ryw6hzIHV0aWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdBam91dGVyIHVuIHRpdHJlIGF1IHN1amV0IGRlIGxcJ2FydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zw6lyZXIgbGUgdGV4dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zw6lyZXIgdG91dCBsXCdhcnRpY2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc8OpcmVyIGxlIGxpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc8OpcmVyIGxlIHRleHRlIGV0IGxpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luc8OpcmVyIGxlIGxcJ2FydGljbGUgZXQgbGUgbGllbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ1BhcyBkXCdhcnRpY2xlcyB0cm91dsOpcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdDZWxhIHBvdXJyYWl0IMOqdHJlIHV0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdQYXMgZGUgcmVzc291cmNlcyB1dGlsZXMgdHJvdXbDqWVzIHBvdXIgY2V0dGUgcmVjaGVyY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnVGFwZXogdW4gc3VqZXQgb3UgdW4gbW90IHBvdXIgb2J0ZW5pciB1bmUgbGlzdGUgZGUgcmVzc291cmNlcyB1dGlsZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdSZWNoZXJjaGVyIHVuIHRleHRlIGludMOpZ3JhbGUgZGFucyBsZXMgYXJ0aWNsZXMgKHBhciBleGVtcGxlICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY3Rpb25zIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1VuaXF1ZW1lbnQgbGVzIGFydGljbGVzIGF2ZWMgZGVzIHZvdGVzLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY3Rpb25zIGRlIG5vdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnVW5pcXVlbWVudCBsZXMgYXJ0aWNsZXMgIGF2ZWMgdW5lIG5vdGUgZGUgLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY3Rpb25zIGRlIHRlbXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdVbmlxdWVtZW50IGxlcyBub3V2ZWF1eCBhcnRpY2xlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdVbmlxdWVtZW50IGxlcyBhcnRpY2xlcyBjcsOpw6lzIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ01vZMOobGUgZGUgcmVjaGVyY2hlIGVuIG1vZMOobGUgPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ051bcOpcm8gZFwnYXJ0aWNsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1JlY2hlcmNoZXIgZGVzIGFydGljbGVzIGF2ZWMgbW90LWNsw6knOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHVibGlxdWUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1JldmVuaXIgw6AgbFwnZXhwbG9yYXRldXIgZGUgbGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdMZXMgcGVybWlzc2lvbnMgZFwnw6ljcml0dXJlIHNvbnQgcmVxdWlzZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnQXVjdW5lcyBjYXTDqWdvcmllcyB0cm91dsOpZXMgZGFucyBsZXNxdWVsbGVzIHZvdXMgYXZleiBsZSBkcm9pdCBkXCfDqWNyaXR1cmUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdBdWN1bmVzIGxhbmd1ZXMgcGFyIGTDqWZhdXQgdHJvdXbDqWVzIGV0IGltcG9zc2libGUgZFwnZW4gY3LDqWVyIHVuZSBub3V2ZWxsZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdCZXNvaW4gZGUgbFwnSUQgZGUgbGEgY2F0w6lnb3JpZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1VuZSBjYXTDqWdvcmllIGRldnJhaXQgYXZvaXIgdW4gbm9tICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXhpc3RlIGTDqWrDoCAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnQ2V0dGUgY2F0w6lnb3JpZSBleGlzdGUgZMOpasOgICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkZSBjYXTDqWdvcmllIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnSW1wb3NzaWJsZSBkZSBzdXBwcmltZXIgbGEgY2F0w6lnb3JpZSAlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdMOpZ29yaWUgbWlzZSDDoCBqb3VyICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdMOpZ29yaWUgYWpvdXTDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdTdXBwcmltZXIgbGEgY2F0w6lnb3JpZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ1ZvdXMgblwnYXZleiBwYXMgbGEgcGVybWlzc2lvbiBwb3VyIGNldHRlIGNhdMOpZ29yaWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdJbXBvc3NpYmxlIGRlIHN1cHByaW1lciBsXCdhcnRpY2xlICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnTFwnSUQgZGUgY2F0w6lnb3JpZSAlcyBlc3QgaW52YWxpZGUgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBwdWlzcXVcJ2F1Y3VuIElEIGRcJ8OpbMOpbWVudCBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnSGlzdG9yaXF1ZSBkZSBsYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdKb3VybmFsIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdDb25maWd1cmF0aW9uIGR1IG1vZHVsZSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuw6ljZXNzYWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIGR1IG1vZHVsZSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBkb2l0IMOqdHJlIHVuZSByw6lmw6lyZW5jZSAiaGFzaCIgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ0F1Y3VuZXMgY29uZmlndXJhdGlvbnMgdHJvdXbDqWVzIHBvdXIgbGEgdnVlICIlcyIgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkZSBsYW5nYWdlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTGUgbm9tIGVzdCByZXF1aXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0NldHRlIGxhbmd1ZSBleGlzdGUgZMOpasOgICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnSW1wb3NzaWJsZSBkZSBzdXBwcmltZXIgbGEgbGFuZ3VlICVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnTGFuZ3VlIG1pc2Ugw6Agam91ciAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMYW5ndWUgYWpvdXTDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdTdXBwcmltZXIgbGEgbGFuZ3VlICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSw6lzdWx0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdEZXJuacOocmUgbWlzZSDDoCBqb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NoYW1wcyBkeW5hbWlxdWVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdBdWN1biAlcyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ0ltcG9zc2libGUgZGUgY2hhcmdlciAiTGFuZ3VhZ2VPYmplY3QiICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQXVjdW5zIHLDqXN1bHRhdHMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtw6lybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICdEZXJuacOocmVzIG1vZGlmaWNhdGlvbnMgcGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24gZGUgbFwnw6lsw6ltZW50IChhdmFudC9hcHLDqHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uIGRlIGxcJ8OpbMOpbWVudCAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgbFwnw6lsw6ltZW50IChhdmFudC9hcHLDqHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0RhdGUgZGUgbW9kaWZpY2F0aW9uIGRlIGxcJ8OpbMOpbWVudCAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ8OJZ2FsIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1BsdXMgZ3JhbmQgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdQbHVzIGdyYW5kIG91IMOpZ2FsIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ1BsdXMgcGV0aXQgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdQbHVzIHBldGl0IG91IMOpZ2FsIMOgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ0xcJ0lEIGR1IGZpY2hpZXIgZXN0IG7DqWNlc3NhaXJlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnTWVyY2kgcG91ciB2b3RyZSB2b3RlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdWb3VzIGF2ZXogZMOpasOgIHZvdMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdBdWN1bmUgbm90ZSBzw6lsZWN0aW9ubsOpZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ0xlIG3DqWNhbmlzbWUgZGUgdm90ZSBuXCdlc3QgcGFzIGFjdGl2w6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ0xlIHRhdXggZGUgdm90ZSBuXCdhIHBhcyDDqXTDqSBkw6lmaW5pICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltZXIgY2V0IGFydGljbGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdDcsOpw6kgZW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnTFwnSUQgZGUgbFwnw6lsw6ltZW50IGVzdCBuw6ljZXNzYWlyZSAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdEZXJuaWVycyBhcnRpY2xlcyBjcsOpw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdEZXJuaWVycyBhcnRpY2xlcyBtb2RpZmnDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnVG9wIDEwIGRlcyBhcnRpY2xlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIHR5cGUgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdMZSB0eXBlIGRvaXQgw6p0cmUgc29pdCAiRGVybmllcnMgYXJ0aWNsZXMgY3LDqcOpcyIsIHNvaXQgIkRlcm5pZXJzIGFydGljbGVzIG1vZGlmacOpcyIsIHNvaXQgIlRvcCAxMCBkZXMgYXJ0aWNsZXMiICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdJbXBvc3NpYmxlIGRlIGNyw6llciB1biBmaWNoaWVyIFJTUyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzICh0ZXh0ZSBpbnTDqWdyYWwpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnQgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIENsaWVudCAodGV4dGUgaW50w6lncmFsKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQdWJsaXF1ZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIFB1YmxpcXVlICh0ZXh0ZSBpbnTDqWdyYWwpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ05vdGUgbsOpY2Vzc2FpcmUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQ2V0IGFydGljbGUgZXN0IHZpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuaWVycyBhcnRpY2xlcyBjcsOpw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0Rlcm5pZXJzIGFydGljbGVzIG1vZGlmacOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlcyBhcnRpY2xlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICdUeXBlIGRlIGNvbnRlbnUnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpcXVlJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0Fqb3V0ZXIgdW4gYXJ0aWNsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvdWxldXIgQ1NTIHBvdXIgbGUgcsOpc3VsdGF0IGR1IHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ0R1csOpZSBkZSB2YWxpZGl0w6kgZHUgY2FjaGUgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBjYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJ0dlc3Rpb24gZGVzIGNhdMOpZ29yaWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnQXJ0aWNsZXMgbGnDqXMgYXUgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ0FydGljbGVzIGxpw6lzIGF1IGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnWm9vbSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnUmVjaGVyY2hlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0NsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdQb3NpdGlvbm5lbWVudCBkw6ljaW1hbCBkdSByw6lzdWx0YXQgZGVzIHZvdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tIGRlIGNhdMOpZ29yaWUgcGFyIGTDqWZhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdMYW5ndWUgcGFyIGTDqWZhdXQgcG91ciBsZXMgYXJ0aWNsZXMgZW4gbW9kZSBsYW5nYWdlIHVuaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnVGFpbGxlIG1heGltdW0gcGFyIGTDqWZhdXQgZGVzIHRpdHJlcyBkYW5zIHVuIGFydGljbGUgw6AgbW9udHJlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpdMOpIHBhciBkw6lmYXV0IGRlcyB0aWNrZXRzIHBvdXIgbFwnYXBwcm9iYXRpb24gZFwnYXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICfDiXRhdCBwYXIgZMOpZmF1dCBkXCd1bmUgZW50csOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ8OJdGF0IHBhciBkw6lmYXV0IGRlcyB0aWNrZXRzIHBvdXIgbFwnYXBwcm9iYXRpb24gZFwnYXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1R5cGUgcGFyIGTDqWZhdXQgZGVzIHRpY2tldHMgcG91ciBsXCdhcHByb2JhdGlvbiBkXCdhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdTdXBwcmltZXIgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdNb2RpZmllciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FjdGl2ZXIgbGUgbW9kdWxlICJsYW5nYWdlcyBtdWx0aXBsZXMiIGRlIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWN0aXZlciBsZSBtb2R1bGUgZGUgbcOpY2FuaXNtZSBkZSB2b3RlIGRlIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3JhdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdab25lIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdab25lIGRlIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdTdXBwcmltZXIgbGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICfDiWRpdGVyIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZSBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ltcHJlc3Npb24gZGUgbGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpcXVlIGRlIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKb3VybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBsYW5ndWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnR2VzdGlvbiBkZXMgbGFuZ3Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGllciB1biBhdXRyZSBvYmpldCDDoCBjZXQgw6lsw6ltZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnTm91dmVsIGFydGljbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0xlcyBub3V2ZWF1eCBhcnRpY2xlcyBkb2l2ZW50IMOqdHJlIGFwcHJvdXbDqXMgYXZhbnQgZFwnw6p0cmUgcHVibGnDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltZXIgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZSBsYSBGQVEgcHVibGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdWdWUgZMOpdGFpbGzDqWUgZGUgbGEgRkFRIHB1YmxpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICdSZWNoZXJjaGUgZGFucyBsYSBGQVEgcHVibGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIFB1YmxpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1JlY2hlcmNoZXIgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICdSZWNoZXJjaGVyIGRhbnMgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdBZmZpY2hlciBsXCdhcnRpY2xlIGVuIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0FmZmljaGVyIGxlIGNoZW1pbiBvdWkvbm9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnQWZmaWNoZXIgbGVzIMOpbMOpbWVudHMgZGVzIHNvdXMtY2F0w6lnb3JpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHV0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdMO0bWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnVGV4dGUgdW5pcXVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICfDiWzDqW1lbnQgYmFycmUgw6Agb3V0aWxzIHBvdXIgcmFjY291cmNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuZSAoY2xpZW50KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuZSAob3DDqXJhdGV1ciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHVibGlxdWUgKHRvdXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ3B1YmxpcXVlIChwdWJsaWMpJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdHeUlLIGJlamVneXrDqXMgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnS3VsY3NzemF2YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdFZ3kga2F0ZWfDs3JpYSBrw7Z0ZWxlesWRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0rDs3bDoWhhZ3nDoXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR3lJSyBrYXRlZ8Ozcmlha2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0d5SUsga2F0ZWfDs3JpYSBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdHeUlLIGthdGVnw7NyaWEgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnQWxrYXRlZ8OzcmnDoWphIGVubmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVsOhbGFzc3pvbiBsZWdhbMOhYmIgZWd5IGpvZ29zdWx0c8OhZyBjc29wb3J0b3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICfDnGd5aW50w6l6xZFjc29wb3J0b2ssIGFtZWx5ZWsgaG96esOhZsOpcm5layBhIGJlamVneXrDqXNla2hleiBlYmJlbiBhIGthdGVnw7NyacOhYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnQSBiw7ZuZ8Opc3rFkWJlbiBtZWdqZWd5esOpc2vDqW50IGZvZyBtZWdqZWxlbm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBrYXRlZ8OzcmnDoXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTmVtIHTDtnLDtmxoZXRpIGV6dCBhIGthdGVnw7NyacOhdC4gTGVnYWzDoWJiIGVneSBHeUlLIGJlamVneXrDqXNiZW4gaGFzem7DoWxqw6FrIMOpcy92YWd5IGxlZ2Fsw6FiYiBlZ3kgbcOhc2lrIGthdGVnw7NyaWEgc3rDvGzFkWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXp0IGEga2F0ZWfDs3Jpw6F0IGEga8O2dmV0a2V6xZEgR3lJSyBiZWplZ3l6w6lzZWtuw6lsIGhhc3puw6FsasOhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFeiBhIGthdGVnw7NyaWEgYSBrw7Z2ZXRrZXrFkSBhbGthdGVnw7NyacOhayBzesO8bMWRamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBHeUlLIGJlamVneXrDqXN0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdHeUlLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdHeUlLIGLDtm5nw6lzesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0d5b3JzIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdIZWx5ZXR0ZXPDrXTFkSBrYXJha3RlcmVrIGVuZ2Vkw6lseWV6ZXR0ZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1NwZWNpw6FsaXMga2VyZXPDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ0Fsa2F0ZWfDs3Jpw6FrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0d5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTmVtIHRhbMOhbGhhdMOzayBhbGthdGVnw7NyacOhay4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0VsxZF6bcOpbnllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIEd5SUsgbmFwbMOzIGFkYXRvay4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR3lJSyBueWVsdmtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdHeUlLIG55ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0d5SUsgbnllbHYgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdBa2tvciBoYXN6bsOhbGphIGV6dCBhIHN6b2xnw6FsdGF0w6FzdCwgaGEgdMO2YmIgbnllbHZ2ZWwgc3plcmV0bmUgZG9sZ296bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ055ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdOeWVsdiBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ055ZWx2IHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEgbnllbHZldD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTmVtIHTDtnLDtmxoZXRpIGV6dCBhIG55ZWx2ZXQuIExlZ2Fsw6FiYiBlZ3kgR3lJSyBiZWplZ3l6w6lzYmVuIGhhc3puw6FsasOhayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFenQgYSBueWVsdmV0IGEga8O2dmV0a2V6xZEgR3lJSyBiZWplZ3l6w6lzZWtuw6lsIGhhc3puw6FsasOhayc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0vDtnJueWV6ZXQgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnR3lJSyBiZWplZ3l6w6lzZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgR3lJSyBhZGF0b2suJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdheiA1LWLFkWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnS3VsY3NzesOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdTemF2YXrDoXMgKHDDqWxkw6F1bCBFZ3llbmzFkSAxMCB2YWd5IE5hZ3lvYmIgbWludCA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnw4lydMOpa2Vsw6lzIChww6lsZMOhdWwgRWd5ZW5sxZEgMjUlIHZhZ3kgTmFneW9iYiBtaW50IDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdKw7N2w6FoYWd5b3R0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXRvdHRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGzDqXRyZWhvesOhc2kgaWRlamUgKGVsxZF0dC91dMOhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGzDqXRyZWhvesOhc2kgaWRlamUgKGvDtnrDtnR0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0d5SUsgYmVqZWd5esOpcyBtw7Nkb3PDrXTDoXNpIGlkZWplIChlbMWRdHQvdXTDoW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0d5SUsgYmVqZWd5esOpcyBtw7Nkb3PDrXTDoXNpIGlkZWplIChrw7Z6w7Z0dCknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnR3lJSyBzemFiYWQtc3phdmFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnR3lJSyBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbCBraXbDoWxhc3p0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdTemF2YXrDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ05pbmNzZW5layBzemF2YXrDoXNpIGJlw6FsbMOtdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnQWRvdHQgc3phdmF6YXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdww6lsZMOhdWwgRWd5ZW5sxZEgMTAgdmFneSBOYWd5b2JiIG1pbnQgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ8OJcnTDqWtlbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnTmluY3NlbmVrIMOpcnTDqWtlbMOpc2kgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ0Fkb3R0IMOpcnTDqWtlbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ3DDqWxkw6F1bCBFZ3llbmzFkSAyNSUgdmFneSBOYWd5b2JiIG1pbnQgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGzDqXRyZWhvesOhc2kgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdHeUlLIGJlamVneXrDqXMgbcOzZG9zw610w6FzaSBpZGVqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdHeUlLIGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnw4lydMOpa2Vsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3phdmF6YXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZW0gdGFsw6FsaGF0w7NrIHN6YXZhemF0b2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIHN6YXZhemF0b2shIExlZ3llbiBheiBlbHPFkSwgYWtpIMOpcnTDqWtlbGkgZXp0IGEgR3lJSyBiZWplZ3l6w6lzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ01lbGzDqWtsZXQgbGV0w7ZsdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdBIGvDtnZldGtlesWRIGxlw61yw6FzaSBibG9ra29rYmFuIGzDqXbFkSBoaXZhdGtvesOhc29rIG1lZ255aXTDoXPDoWhveiBsZWhldHPDqWdlcywgaG9neSBsZSBrZWxsIG55b21uaWEgYSBDdHJsIHZhZ3kgQ21kIHZhZ3kgU2hpZnQgYmlsbGVudHnFsXQsIG1pa8O2emJlbiBhIGhpdmF0a296w6FzcmEga2F0dGludCAoYSBiw7ZuZ8Opc3rFkWrDqXTFkWwgw6lzIG9wZXLDoWNpw7NzIHJlbmRzemVyw6l0xZFsIGbDvGdnxZFlbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnTWVubnlpcmUgdm9sdCBoYXN6bm9zIGV6IGEgYmVqZWd5esOpcz8gS8OpcmrDvGsga8O8bGRqZSBlbCBuZWvDvG5rIGF6IMOpcnTDqWtlbMOpc8OpdCBhIEd5SUsgYWRhdGLDoXppcyB0w7Zrw6lsZXRlc8OtdMOpc8OpaGV6LiBLw7ZzesO2bmrDvGshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmVtIGhhc3pub3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbmFneW9uIGhhc3pub3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0d5SUsgY8OtbSBob3p6w6FhZMOhc2EgYSBiZWplZ3l6w6lzIHTDoXJnecOhaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0d5SUsgc3rDtnZlZyBiZXN6w7pyw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdUZWxqZXMgR3lJSyBiZXN6w7pyw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdHeUlLIGhpdmF0a296w6FzIGJlc3rDunLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdHeUlLIHN6w7Z2ZWcgw6lzIGhpdmF0a296w6FzIGJlc3rDunLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdUZWxqZXMgR3lJSyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2EnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIEd5SUsgYmVqZWd5esOpc2VrLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJ0V6IGhhc3pub3MgbGVoZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgaGFzem5vcyBlcsWRZm9ycsOhc29rIGEgdMOhcmd5aG96IMOpcyBhIHN6w7Z2ZWdoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfDjXJqb24gYmUgZWd5IHTDoXJneWF0IHZhZ3kgc3rDtnZlZ2V0IGEgaGFzem5vcyBlcsWRZm9ycsOhc29rIGxpc3TDoWrDoW5hayBsZWvDqXLDqXPDqWhlei4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1N6YWJhZC1zemF2YXMga2VyZXPDqXMgYSBHeUlLIGJlamVneXrDqXNla2JlbiAocMOpbGTDoXVsIOKAnkoqbm9z4oCdIHZhZ3kg4oCeS292KuKAnSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTemF2YXrDoXNpIGtvcmzDoXRvesOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdDc2FrIGEgc3phdmF6YXRva2thbCByZW5kZWxrZXrFkSBHeUlLIGJlamVneXrDqXNla+KApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ8OJcnTDqWtlbMOpcyBrb3Jsw6F0b3rDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdDc2FrIGF6IMOpcnTDqWtlbMOpc3NlbCByZW5kZWxrZXrFkSBHeUlLIGJlamVneXrDqXNla+KApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ0lkxZEgbWVna8O2dMOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdDc2FrIGF6IGVra29yIGzDqXRyZWhvem90dCBHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdDc2FrIGF6IGUga8O2esO2dHQgbMOpdHJlaG96b3R0IEd5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ0tlcmVzw6lzaSBwcm9maWwgc2FibG9ua8OpbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQmVqZWd5esOpc3N6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQmVqZWd5esOpc2VrIGtlcmVzw6lzZSBrdWxjc3N6YXZha2thbCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdOeWlsdsOhbm9zJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWaXNzemEgYSBHeUlLIGLDtm5nw6lzesWRaMO2eic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnw41yw6FzLCBvbHZhc8OhcyBqb2dvc3VsdHPDoWdyYSB2YW4gc3rDvGtzw6lnZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgb2x5YW4ga2F0ZWfDs3Jpw6FrLCBhaG9sIGEgZmVsaGFzem7DoWzDs25hayDDrXLDoXNpL29sdmFzw6FzaSBqb2dvc3VsdHPDoWdhaSB2YW5uYWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ05lbSB0YWzDoWxoYXTDsyBhbGFww6lydGVsbWV6ZXR0IG55ZWx2LCDDqXMgbmVtIGxlaGV0IMO6amF0IGzDqXRyZWhvem5pLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ0thdGVnw7NyaWEtYXpvbm9zw610w7Mgc3rDvGtzw6lnZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VneSBrYXRlZ8OzcmnDoW5hayByZW5kZWxrZXpuaWUga2VsbCBuw6l2dmVsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXogYSBrYXRlZ8OzcmlhIG3DoXIgbMOpdGV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFeiBhIGthdGVnw7NyaWEgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBrYXRlZ8OzcmlhLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ05lbSBzaWtlcsO8bHQgYSh6KSAlcyBrYXRlZ8OzcmlhIHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnR3lJSyBrYXRlZ8OzcmlhIGZyaXNzw610dmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdHeUlLIGthdGVnw7NyaWEgaG96esOhYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSB0w7ZybMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgZWxlbWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGthdGVnw7NyacOhaG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdOZW0gc2lrZXLDvGx0IGEoeikgJXMgR3lJSyBiZWplZ3l6w6lzIHTDtnJsw6lzZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQSh6KSAlcyBrYXRlZ8OzcmlhLWF6b25vc8OtdMOzIMOpcnbDqW55dGVsZW4uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG1pdmVsIG5pbmNzIGVsZW1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0d5SUsgZWzFkXptw6lueWVrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnR3lJSyBuYXBsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnQSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBrb25maWd1csOhY2nDs3MgYmXDoWxsw610w6FzIHN6w7xrc8OpZ2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ0EgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcga29uZmlndXLDoWNpw7NzIGJlw6FsbMOtdMOhc25hayBraXZvbmF0LWhpdmF0a296w6FzbmFrIGtlbGwgbGVubmllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ05lbSB0YWzDoWxoYXTDsyBrb25maWd1csOhY2nDs3MgYmXDoWxsw610w6FzIGEoeikg4oCeJXPigJ0gbsOpemV0aGV6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBueWVsdmF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0EgbsOpdiBrw7Z0ZWxlesWRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0V6IGEgbnllbHYgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTmVtIHNpa2Vyw7xsdCBhKHopICVzIG55ZWx2IHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnR3lJSyBueWVsdiBmcmlzc8OtdHZlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnR3lJSyBueWVsdiBob3p6w6FhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICclcyBueWVsdiB0w7ZybMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ0VyZWRtw6lueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1V0b2xzw7MgZnJpc3PDrXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnR3lJSyBkaW5hbWlrdXMgbWV6xZFrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdOaW5jcyAlcyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdOZW0gbGVoZXQgYmV0w7ZsdGVuaSBhIG55ZWx2b2JqZWt0dW1vdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmluY3MgdGFsw6FsYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdHeUlLIHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXRvdHRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0d5SUsgZWxlbSBsw6l0cmVob3rDoXNpIGlkZWplIChlbMWRdHQvdXTDoW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0d5SUsgZWxlbSBsw6l0cmVob3rDoXNpIGlkZWplIChrw7Z6w7Z0dCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdHeUlLIGVsZW0gbcOzZG9zw610w6FzaSBpZGVqZSAoZWzFkXR0L3V0w6FuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdHeUlLIGVsZW0gbcOzZG9zw610w6FzaSBpZGVqZSAoa8O2esO2dHQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ0VneWVubMWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ05hZ3lvYmIgbWludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnTmFneW9iYiBtaW50IHZhZ3kgZWd5ZW5sxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnS2lzZWJiIG1pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0tpc2ViYiBtaW50IHZhZ3kgZWd5ZW5sxZEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnRsOhamxhem9ub3PDrXTDsyBzesO8a3PDqWdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnS8O2c3rDtm5qw7xrIGEgc3phdmF6YXTDoXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnTcOhciBzemF2YXpvdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmluY3Mgw6lydMOpa2Vsw6lzIGtpdsOhbGFzenR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnQSBzemF2YXrDoXNpIG1lY2hhbml6bXVzIG5pbmNzIGVuZ2Vkw6lseWV6dmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnQSBzemF2YXrDoXPDqXJ0w6lrZWzDqXMgbmluY3MgbWVnaGF0w6Fyb3p2YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnR3lJSyBiZWplZ3l6w6lzIG55b210YXTDoXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnTMOpdHJlaG96dmEgZXplayBrw7Z6w7Z0dCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICdFbGVtYXpvbm9zw610w7Mgc3rDvGtzw6lnZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdHeUlLIGJlamVneXrDqXNlayAow7pqb25uYW4gbMOpdHJlaG96dmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdHeUlLIGJlamVneXrDqXNlayAobGVndXTDs2JiIG3Ds2Rvc8OtdHZhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdHeUlLIGJlamVneXrDqXNlayAobGVnam9iYiAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdOaW5jcyB0w61wdXMgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnQSB0w61wdXMgY3NhayBMYXN0Q3JlYXRlLCBMYXN0Q2hhbmdlIHZhZ3kgVG9wMTAgbGVoZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnTmVtIGxlaGV0IGzDqXRyZWhvem5pIFJTUy1mw6FqbHQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChHeUlLIHN6YWJhZC1zemF2YXMpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSDDvGd5ZsOpbCAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gw7xneWbDqWwgKEd5SUsgc3phYmFkLXN6YXZhcyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gbnlpbHbDoW5vcyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIG55aWx2w6Fub3MgKEd5SUsgc3phYmFkLXN6YXZhcyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnw4lydMOpa2Vsw6lzIHN6w7xrc8OpZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnRXogYSBiZWplZ3l6w6lzIMO8cmVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMZWd1dMOzYmIgbMOpdHJlaG96b3R0IEd5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xlZ3V0w7NiYiBmcmlzc8OtdGV0dCBHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnTGVnam9iYiAxMCBHeUlLIGJlamVneXrDqXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGFydGFsb210w61wdXMnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2JlbHPFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2vDvGxzxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnbnlpbHbDoW5vcyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09LJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0VneSBzesWxcsWRIGEgSFRNTCBraW1lbmV0aGV6LCBob2d5IGhpdmF0a296w6Fzb2thdCBhZGpvbiBlZ3kgbWVnaGF0w6Fyb3pvdHQgc3rDtnZlZyBtw7Znw6kuIEF6IEltYWdlIGVsZW0ga8OpdGbDqWxlIGJlbWVuZXRldCBmb2dhZC4gQXogZWxzxZEgYSBrw6lwIG5ldmUgKHDDqWxkw6F1bCBmYXEucG5nKS4gRWJiZW4gYXogZXNldGJlbiBheiBPVE9CTyBrw6lwZWsgw7p0dm9uYWxhIGxlc3ogZmVsaGFzem7DoWx2YS4gQSBtw6Fzb2RpayBsZWhldMWRc8OpZyBhIGvDqXByZSBtdXRhdMOzIGhpdmF0a296w6FzIGJlc3rDunLDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdHeUlLIGJlamVneXrDqXMgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIHN6w61uIGEgc3phdmF6w6FzIGVyZWRtw6luecOpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnR3lvcnPDrXTDs3TDoXIgaWTFkSBhIEd5SUsgZWxlbWVrIGVsaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWfDs3JpYWtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnS2F0ZWfDs3JpYWtlemVsw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnw5xneWbDqWwgR3lJSyBueW9tdGF0w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJ8OcZ3lmw6lsIEd5SUsga2FwY3NvbMOzZMOzIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICfDnGd5ZsOpbCBHeUlLIGthcGNzb2zDs2TDsyBiZWplZ3l6w6lzZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ8OcZ3lmw6lsIEd5SUsgbmFnecOtdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICfDnGd5ZsOpbCBHeUlLIGtlcmVzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnw5xneWbDqWwgR3lJSy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQSBzemF2YXrDoXNpIGVyZWRtw6lueSB0aXplZGVzamVneWVpbmVrIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0FsYXDDqXJ0ZWxtZXpldHQga2F0ZWfDs3JpYW7DqXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdBIEd5SUsgYmVqZWd5esOpc2VrIGFsYXDDqXJ0ZWxtZXpldHQgbnllbHZlIGVneW55ZWx2xbEgbcOzZGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnRWd5IEd5SUsgYmVqZWd5esOpc2JlbiBtZWdqZWxlbsOtdGVuZMWRIGPDrW1layBhbGFww6lydGVsbWV6ZXR0IGxlZ25hZ3lvYmIgbcOpcmV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnQSBqZWd5ZWsgYWxhcMOpcnRlbG1lemV0dCBwcmlvcml0w6FzYSBhIEd5SUsgYmVqZWd5esOpc2VrIGrDs3bDoWhhZ3nDoXPDoW7DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdBIEd5SUsgYmVqZWd5esOpcyBhbGFww6lydGVsbWV6ZXR0IMOhbGxhcG90YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0EgamVneWVrIGFsYXDDqXJ0ZWxtZXpldHQgw6FsbGFwb3RhIGEgR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc8OhbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnQSBqZWd5ZWsgYWxhcMOpcnRlbG1lemV0dCB0w61wdXNhIGEgR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc8OhbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ0EgbcWxdmVsZXQgcGFyYW3DqXRlciBhbGFww6lydGVsbWV6ZXR0IMOpcnTDqWtlIGEgbnlpbHbDoW5vcyBlbMWRdMOpdHByb2dyYW1uw6FsLiBBIG3FsXZlbGV0IHBhcmFtw6l0ZXJ0IGEgcmVuZHN6ZXIgcGFyYW5jc2bDoWpsamFpYmFuIGhhc3puw6FsasOhay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ03FsXZlbGV0ZWsgbWVnaGF0w6Fyb3rDoXNhLCBhaG9sIGVneSBiZcOhbGzDrXTDoXNvayBnb21iIMOpcmhldMWRIGVsIGEga2FwY3NvbHQgb2JqZWt0dW1vayBmZWzDvGxldGkgZWxlbWVuIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IOKAnsO2c3N6ZXRldHTigJ0pLiBOZSBmZWxlZGplLCBob2d5IGV6ZWtuZWsgYSBtxbF2ZWxldGVrbmVrIHJlbmRlbGtlem5pw7xrIGtlbGwgYSBrw7Z2ZXRrZXrFkSBKUyDDqXMgQ1NTIGbDoWpsb2sgcmVnaXN6dHLDoWzDoXPDoXZhbDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgw6lzIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IGEgR3lJSyBjw61tw6l0IMO2c3N6ZSBrZWxsLWUgZsWxem5pIGEgYmVqZWd5esOpcyB0w6FyZ3nDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgaGF0w6Fyb3ogbWVnIGVneSBHeUlLIG5hcGzDsyBraXMgbsOpemV0w6luZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBoYXTDoXJveiBtZWcgZWd5IEd5SUsgbGlzdGEga2lzIG7DqXpldMOpbmVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBhdHRyaWLDunR1bW90IGEgR3lJSyByZW5kZXrDqXNoZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGtlcmVzw6lzw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBhdHRyaWLDunR1bW90IGEgR3lJSyByZW5kZXrDqXNoZXogYXogw7xneWbDqWxmZWzDvGxldCBHeUlLIGtlcmVzw6lzw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgYXR0cmliw7p0dW1vdCBhIEd5SUsgcmVuZGV6w6lzaGV6IGEgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIGtlcmVzw6lzw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgYXR0cmliw7p0dW1vdCBhIEd5SUsgcmVuZGV6w6lzaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBhdHRyaWLDunR1bW90IGEgR3lJSyByZW5kZXrDqXNoZXogYXogw7xneWbDqWxmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBhdHRyaWLDunR1bW90IGEgR3lJSyByZW5kZXrDqXNoZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IEd5SUsgc29ycmVuZGV0IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqW5layBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBzb3JyZW5kZXQgYXogw7xneWbDqWxmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpbmVrIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVnw7pqYWJiIGZlbMO8bHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBzb3JyZW5kZXQgYSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6luZWsgZXJlZG3DqW55w6liZW4uIEZlbDogbGVncsOpZ2ViYmkgZmVsw7xscmUuIExlOiBsZWfDumphYmIgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgZWd5IGtlcmVzw6lzaSBlcmVkbcOpbnkgYWxhcMOpcnRlbG1lemV0dCBHeUlLIHNvcnJlbmRqw6l0IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBlZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBhbGFww6lydGVsbWV6ZXR0IEd5SUsgc29ycmVuZGrDqXQgYXogw7xneWbDqWxmZWzDvGxldGVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVnw7pqYWJiIGZlbMO8bHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBlZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBhbGFww6lydGVsbWV6ZXR0IEd5SUsgc29ycmVuZGrDqXQgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uIEZlbDogbGVncsOpZ2ViYmkgZmVsw7xscmUuIExlOiBsZWfDumphYmIgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgR3lJSyBrZXJlc8Opc2kgYXR0cmliw7p0dW1vdCBhIEd5SUsga2VyZXPDqXMga8OpcGVybnnFkW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgZWd5IEd5SUstYWxhcMO6IGplZ3liZSBiZXN6w7pyYW5kw7MgaW5mb3Jtw6FjacOza2F0LiBBIOKAnlRlbGplcyBHeUlL4oCdIHN6w7Z2ZWdldCwgbWVsbMOpa2xldGVrZXQgw6lzIGJlw6FneWF6b3R0IGvDqXBla2V0IHRhcnRhbG1hei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtIHBhcmFtw6l0ZXJlaXQuIEEg4oCeTGltaXTigJ0gaGF0w6Fyb3p6YSBtZWcgYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IGJlamVneXrDqXNlayBzesOhbcOhdC4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBqZWx6aSwgaG9neSBhIGLFkXbDrXRtw6lueSBhbGFww6lydGVsbWV6ZXR0ZW4gZW5nZWTDqWx5ZXp2ZSB2YW4sIHZhZ3kgaG9neSBhIGZlbGhhc3puw6Fsw7NuYWsga8OpenplbCBrZWxsIGVuZ2Vkw6lseWV6bmllIGF6dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZXR0IG9zemxvcG9rYXQgYSBHeUlLIGLDtm5nw6lzesWRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgbWVnamVsZW7DrXRldHQgb3N6bG9wb2thdCBhIEd5SUsgbmFwbMOzYmFuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGV0dCBvc3psb3Bva2F0IGEgR3lJSyBrZXJlc8WRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdNZWdoYXTDoXJvenphLCBob2d5IGEg4oCeR3lJSyBiZXN6w7pyw6FzYeKAnSBoaXZhdGtvesOhcyBob2wgbGVneWVuIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0EgR3lJSyBlbGVtIHN6YWJhZCBzesO2dmVnZXMgbWV6xZFqw6luZWsgbWVnaGF0w6Fyb3rDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdBIEd5SUsgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGhvenrDoWFkw6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgc3plcmtlc3p0w6lzZSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBHeUlLIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgw6F0dGVraW50xZEga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBueW9tdGF0w6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBHeUlLIG55b210YXTDoXNhIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgbnlvbXRhdMOhc2Ega8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsga2VyZXPDqXNlIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBHeUlLIGtlcmVzw6lzZSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBrZXJlc8Opc2Uga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsga2lzIGZvcm3DoXR1bSDDoXR0ZWtpbnTFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgbmFnecOtdMOhc2Ega8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBHeUlLIG5hZ3nDrXTDoXNhIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBuYWd5w610w6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnQSBHeUlLIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1TDtmJiIG55ZWx2IGVuZ2Vkw6lseWV6w6lzZSBhIEd5SUsgbW9kdWxiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ0Ega2FwY3NvbMOzZMOzIGJlamVneXrDqXNlayBmdW5rY2nDsyBlbmdlZMOpbHllesOpc2UgYXogw7xneWbDqWwgZWzFkXTDqXRwcm9ncmFtaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1N6YXZhesOhc2kgbWVjaGFuaXptdXMgZW5nZWTDqWx5ZXrDqXNlIGEgR3lJSyBtb2R1bGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdCw7ZuZ8Opc3rFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdHeUlLIEFKQVggdsOhbGFzemFkw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdHeUlLIEFKQVggdsOhbGFzemFkw7MgYSBSaWNodGV4dGhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdHeUlLIHRlcsO8bGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0d5SUsgdGVyw7xsZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnR3lJSyB0w7ZybMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnR3lJSyBzemVya2VzenTDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ0d5SUsgZWzFkXptw6lueWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnR3lJSyBuYXBsw7Mgw6F0dGVraW50xZEg4oCea2lz4oCdIGtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdHeUlLIMOhdHRla2ludMWRIOKAnmtpc+KAnSBrb3Jsw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdHeUlLIG55b210YXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsga2VyZXPDqXNpIGjDoXR0w6lycHJvZ3JhbSDDunR2w6FsYXN6dMOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJzQuIG1lesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJzUuIG1lesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnVGVsamVzIEd5SUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnQ3NvcG9ydCBhIEd5SUsgYmVqZWd5esOpc2VrIGrDs3bDoWhhZ3nDoXNob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdBIEd5SUsgZWzFkXptw6lueWVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdCZWxzxZEgbWV6xZFrIGZlbHbDqXRlbGUgZWd5IEd5SUstYWxhcMO6IGplZ3llbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdNaW5kZW4gbWV6xZEgbmV2w6luZWsgZmVsdsOpdGVsZSBlZ3kgR3lJSy1hbGFww7ogamVneWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdBem9rIGEgZmVsw7xsZXRlaywgYWhvbCBhIGd5b3JzIGtlcmVzw6lzbmVrIG1lZyBrZWxsIGplbGVubmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnTmFwbMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdOeWVsdmtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnTnllbHZrZXplbMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdBIGtlcmVzw6lzIGtvcmzDoXRvesOhc2EgYSBrdWxjc3N6w7MgR3lJSyBiZWplZ3l6w6lzbGlzdGEgw7Zzc3plw6FsbMOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdNw6FzaWsgb2JqZWt0dW0gaG96esOha2FwY3NvbMOhc2EgZWhoZXogYSBHeUlLIGVsZW1oZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICdBem9uIHbDoXLDs2xpc3RhbmV2ZWsgbGlzdMOhamEsIGFtZWx5ZWtuw6lsIGEga2FwY3NvbMOzZMOzIGJlamVneXrDqXMgZnVua2Npw7MgZW5nZWTDqWx5ZXp2ZSB2YW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OBbGxhcG90dMOtcHVzb2sgbGlzdMOhamEsIGFtZWx5ZWsgaGFzem7DoWxoYXTDs2sgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfDgWxsYXBvdHTDrXB1c29rIGxpc3TDoWphLCBhbWVseWVrIGhhc3puw6FsaGF0w7NrIGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OBbGxhcG90dMOtcHVzb2sgbGlzdMOhamEsIGFtZWx5ZWsgaGFzem7DoWxoYXTDs2sgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdCZXTDtmx0xZFtb2R1bCByZWdpc3p0csOhY2nDsyBhIG55aWx2w6Fub3MgZmVsw7xsZXRoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkSBlcmVkbcOpbnnDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIGxlZ25hZ3lvYmIgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZEgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIEd5SUsgbmFwbMOzYmFuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGtlcmVzw6lzIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBrZXJlc8OpcyBlcmVkbcOpbnnDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIGxlZ25hZ3lvYmIgc3rDoW1hIGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGtlcmVzw6lzIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBHeUlLIGLDtm5nw6lzesWRYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzYmVuIGzDqXbFkSBjw61tZWsgbGVnbmFneW9iYiBtw6lyZXRlIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsgYsO2bmfDqXN6xZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsgYsO2bmfDqXN6xZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBrZXJlc8WRYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzYmVuIGzDqXbFkSBjw61tZWsgbGVnbmFneW9iYiBtw6lyZXRlIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBHeUlLIGtlcmVzxZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBHeUlLIGtlcmVzxZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsgbmFwbMOzYmFuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzYmVuIGzDqXbFkSBjw61tZWsgbGVnbmFneW9iYiBtw6lyZXRlIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgbW9kdWwgYSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsIGVsxZHDoWxsw610w6Fzw6Fob3ogYSByw7Z2aWQgR3lJSyBrZXJlc8Opc27DqWwgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgbW9kdWwgYSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsIGVsxZHDoWxsw610w6Fzw6Fob3ogYSByw7Z2aWQgR3lJSyBrZXJlc8Opc2hleiBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnRWd5IG1vZHVsIGEgZ3lvcnMgR3lJSyBrZXJlc8OpcyBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsasOhbmFrIGVsxZHDoWxsw610w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICfDmmogR3lJSyBiZWplZ3l6w6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdBeiDDumogR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc2Egc3rDvGtzw6lnZXMgYSBrw7Z6esOpdMOpdGVsw7xrIGVsxZF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBrZXJlc8Opc2kgZXJlZG3DqW55IG1pbmRlbiBvbGRhbMOhbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIHN6w6FtYSBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBtaW5kZW4gb2xkYWzDoW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBzesOhbWEgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQSBtZWdqZWxlbsOtdGV0dCBlbGVtZWsgc3rDoW1hIGEgbGVndXTDs2JiIG3Ds2Rvc8OtdG90dGFrYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0EgbWVnamVsZW7DrXRldHQgZWxlbWVrIHN6w6FtYSBhIGxlZ3V0w7NiYiBsw6l0cmVob3pvdHRha2Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdBIG1lZ2plbGVuw610ZXR0IGVsZW1layBzesOhbWEgYSBsZWdqb2JiIDEwIHN6b2xnw6FsdGF0w6FzYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnS2ltZW5ldHN6xbFyxZEgSmF2YVNjcmlwdCBob3p6w6FhZMOhc8OhaG96IGF6IMO8Z3lmw6lsamVneSDDvHplbmV0IGvDqXBlcm55xZFow7Z6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdLaW1lbmV0a29ybMOhdCBhIGthcGNzb2zDs2TDsyBHeUlLIGJlamVneXrDqXNla2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga2lzIEd5SUsgbmFwbMOzIMOhdHRla2ludMWRIG9sZGFsYWlob3ogKGFtZWx5ZWtiZW4gYSBHeUlLIGVsZW1layBtZWdqZWxlbm5laykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBraXMgR3lJSyDDoXR0ZWtpbnTFkSBvbGRhbGFpaG96IChhbWVseWVrYmVuIGEgR3lJSyBlbGVtZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0EgR3lJSyBueW9tdGF0w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ055aWx2w6Fub3MgR3lJSyBueW9tdGF0w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnTnlpbHbDoW5vcyBHeUlLIG5hZ3nDrXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ055aWx2w6Fub3MgR3lJSyBrZXJlc8Opcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdOeWlsdsOhbm9zIEd5SUsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1bDoXLDs2xpc3RhIGEgR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ8OJcnTDqWtlbMOpc2VrIGEgc3phdmF6w6FzaG96LiBBIGt1bGNzbmFrIHN6w6F6YWzDqWtiYW4ga2VsbCBsZW5uaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdHeUlLIGtlcmVzw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJ0tpcyBHeUlLIGtlcmVzw6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICdHeUlLIGtlcmVzw6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0FubmFrIGtpdsOhbGFzenTDoXNhLCBob2d5IGFsYXDDqXJ0ZWxtZXpldHRlbiBow6FueSBlbGVtIGplbGVuamVuIG1lZyBhIOKAnmtpc+KAnSBuYXBsw7Mgw6F0dGVraW50xZFiZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQW5uYWsga2l2w6FsYXN6dMOhc2EsIGhvZ3kgYWxhcMOpcnRlbG1lemV0dGVuIGjDoW55IGVsZW0gamVsZW5qZW4gbWVnIGEg4oCea2lz4oCdIMOhdHRla2ludMWRYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdBIGJlw6FneWF6b3R0IEhUTUwgbWV6xZFrIGFsYXDDqXJ0ZWxtZXpldHQgbWFnYXNzw6Fnw6FuYWsgYmXDoWxsw610w6FzYSAoa8OpcHBvbnRiYW4pIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIG7DqXpldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0EgYmXDoWd5YXpvdHQgSFRNTCBtZXrFkWsgYWxhcMOpcnRlbG1lemV0dCBtYWdhc3PDoWfDoW5hayBiZcOhbGzDrXTDoXNhIChrw6lwcG9udGJhbikgYXogw7xneWbDqWwgR3lJSy1uYWd5w610w6FzICjDqXMgbnlpbHbDoW5vcyBHeUlLLW5hZ3nDrXTDoXMpIG7DqXpldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdBIGJlw6FneWF6b3R0IEhUTUwgbWV6xZFrIGxlZ25hZ3lvYmIgbWFnYXNzw6Fnw6FuYWsgYmXDoWxsw610w6FzYSAoa8OpcHBvbnRiYW4pIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIG7DqXpldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0EgYmXDoWd5YXpvdHQgSFRNTCBtZXrFkWsgbGVnbmFneW9iYiBtYWdhc3PDoWfDoW5hayBiZcOhbGzDrXTDoXNhIChrw6lwcG9udGJhbikgYXogw7xneWbDqWwgR3lJSy1uYWd5w610w6FzICjDqXMgbnlpbHbDoW5vcyBHeUlLLW5hZ3nDrXTDoXMpIG7DqXpldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0Eg4oCeR3lJSyBoaXZhdGtvesOhcyBiZXN6w7pyw6FzYeKAnSBnb21iIG1lZ2plbGVuw610w6lzZSBheiDDvGd5aW50w6l6xZFpIEd5SUstbmFnecOtdMOhcyBraXMgbsOpemV0w6liZW4gYSBueWlsdsOhbm9zIEd5SUsgYmVqZWd5esOpc2VrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnQSDigJ5HeUlLIHN6w7Z2ZWcgw6lzIGhpdmF0a296w6FzIGJlc3rDunLDoXNh4oCdIC8g4oCeVGVsamVzIEd5SUsgw6lzIGhpdmF0a296w6FzIGJlc3rDunLDoXNh4oCdIGdvbWIgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIGtpcyBuw6l6ZXTDqWJlbiBhIG55aWx2w6Fub3MgR3lJSyBiZWplZ3l6w6lzZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnQSDigJ5HeUlLIHN6w7Z2ZWcgYmVzesO6csOhc2HigJ0gLyDigJ5UZWxqZXMgR3lJSyBiZXN6w7pyw6FzYeKAnSBnb21iIG1lZ2plbGVuw610w6lzZSBheiDDvGd5aW50w6l6xZFpIEd5SUstbmFnecOtdMOhcyBraXMgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ0d5SUsgYmVqZWd5esOpcyBtZWdqZWxlbsOtdMOpc2UgSFRNTCBmb3Jtw6F6w6Fzc2FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdHeUlLIMO6dHZvbmFsIG1lZ2plbGVuw610w6lzZSBpZ2VuL25lbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfDiXJ2w6lueXRlbGVuIGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpbmVrIGVyZWRtw6luecOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnQWxrYXRlZ8OzcmnDoWsgZWxlbWVpbmVrIG1lZ2plbGVuw610w6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQXogdXRvbGrDoXJhIG3Ds2Rvc8OtdG90dCBlbGVtZWsgbWVnamVsZW7DrXTDqXNlIGEgbWVnaGF0w6Fyb3pvdHQgZmVsw7xsZXRla2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQXogdXRvbGrDoXJhIGzDqXRyZWhvem90dCBlbGVtZWsgbWVnamVsZW7DrXTDqXNlIGEgbWVnaGF0w6Fyb3pvdHQgZmVsw7xsZXRla2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ0NzaWxsYWdvayBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCDDqXJ0w6lra2VsIGVneWVubMWRIHZhZ3kgYW5uw6FsIGpvYmIgw6lydMOpa2Vsw6lzc2VsIHJlbmRlbGtlesWRIGJlamVneXrDqXNla27DqWwgKMOhbGzDrXRzYSBheiDDqXJ0w6lrZXQg4oCeMOKAnS1yYSBhIGtpbWVuZXQga2lrYXBjc29sw6Fzw6Fob3opLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnQSBsZWdqb2JiIDEwIGVsZW0gbWVnamVsZW7DrXTDqXNlIGEgbWVnaGF0w6Fyb3pvdHQgZmVsw7xsZXRla2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnU3phdmF6w6FzIG1lZ2plbGVuw610w6lzZSBhIG1lZ2hhdMOhcm96b3R0IGZlbMO8bGV0ZWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuLCBhbWVseSBsZWhldMWRdsOpIHRlc3ppIGVneSBHeUlLIGhvenrDoWthcGNzb2zDoXPDoXQgZWd5IG3DoXNpayBvYmpla3R1bWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0bmVrIGF6IGlseWVuIEd5SUsgbmFnecOtdMOhc2kgbsOpemV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4sIGFtZWx5IGxlaGV0xZF2w6kgdGVzemkgZWd5IEd5SUsgdMO2cmzDqXPDqXQgYW5uYWsgbmFnecOtdMOhc2kgbsOpemV0w6luIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBHeUlLIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kgR3lJSyBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmUgdmFsw7Mgdmlzc3phdMOpcsOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBHeUlLIG55b210YXTDoXPDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdNZWdvbGTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ0plbGVuc8OpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdDc2FrIHN6w7Z2ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBueWVsdmVrIGEga2FwY3NvbMOzZMOzIEd5SUsgYmVqZWd5esOpc2VrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRWd5IEd5SUsgYXpvbm9zw610w7NqYSwgcMOpbGTDoXVsIEZBUSMsIFRCIywgR3lJSyMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGhhdMOhcm96emEgbWVnLCBob2d5IGVneSDigJ5HeUlL4oCdIG9iamVrdHVtIMO2c3N6ZWvDtnRoZXTFkS1lIG3DoXMg4oCeR3lJS+KAnSBvYmpla3R1bW9ra2FsIGEg4oCeTm9ybcOhbOKAnSBoaXZhdGtvesOhc3TDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXogYSBiZcOhbGzDrXTDoXMgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgZWd5IOKAnkd5SUvigJ0gb2JqZWt0dW0gw7Zzc3pla8O2dGhldMWRLWUgbcOhcyDigJ5HeUlL4oCdIG9iamVrdHVtb2trYWwgYSDigJ5TesO8bMWRLWd5ZXJtZWvigJ0gaGl2YXRrb3rDoXN0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBoYXTDoXJvenphIG1lZywgaG9neSBlZ3kg4oCeR3lJS+KAnSBvYmpla3R1bSDDtnNzemVrw7Z0aGV0xZEtZSBtw6FzIOKAnkplZ3nigJ0gb2JqZWt0dW1va2thbCBhIOKAnk5vcm3DoWzigJ0gaGl2YXRrb3rDoXN0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGhhdMOhcm96emEgbWVnLCBob2d5IGVneSDigJ5HeUlL4oCdIG9iamVrdHVtIMO2c3N6ZWvDtnRoZXTFkS1lIG3DoXMg4oCeSmVneeKAnSBvYmpla3R1bW9ra2FsIGEg4oCeU3rDvGzFkS1neWVybWVr4oCdIGhpdmF0a296w6FzdMOtcHVzIGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0plZ3kgdMO2cnpzZSBlZ3kgR3lJSyBiZWplZ3l6w6lzIGrDs3bDoWhhZ3nDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0plZ3kgdMOhcmd5YSBlZ3kgR3lJSyBiZWplZ3l6w6lzIGrDs3bDoWhhZ3nDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0VzemvDtnp0w6FyZWxlbSBlZ3kgZ3lvcnNiaWxsZW50ecWxaMO2ei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2vDvGxzxZEgKMO8Z3lmw6lsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnYmVsc8WRICjDvGd5aW50w6l6xZEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ255aWx2w6Fub3MgKMO2c3N6ZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ255aWx2w6Fub3MgKG55aWx2w6Fub3MpJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdUYW1iYWggQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLYXRha3VuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZWJ1YWgga2F0ZWdvcmkgZGlidXR1aGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZXJzZXR1anVhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnVGFtYmFoIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdCBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1Yi1rYXRlZ29yaSBkYXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnU2lsYWhrYW4gcGlsaWggc2V0aWRha255YSBzYXR1IGl6aW4gZ3J1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cCBBZ2VuIHlhbmcgZGFwYXQgbWVuZ2Frc2VzIGFydGlrZWwgZGFsYW0ga2F0ZWdvcmkgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdBa2FuIGRpdGFtcGlsa2FuIHNlYmFnYWkga29tZW50YXIgZGkgRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0FuZGEgeWFraW4gYWthbiBtZW5naGFwdXMga2F0ZWdvcmkgaW5pPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0FuZGEgdGlkYWsgZGFwYXQgbWVuZ2hhcHVzIGthdGVnb3JpIGluaS4gS2F0ZWdvcmkgaW5pIGRpcGFrYWkgcGFkYSBzZXRpZGFrbnlhIHNhdHUgYXJ0aWtlbCBGQVEgZGFuL2F0YXUgbWVydXBha2FuIHBhcmVudCBkYXJpIHNhbGFoIHNhdHUga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdLYXRlZ29yaSBpbmkgZGlndW5ha2FuIGRhbGFtIGFydGlrZWwgRkFRIGJlcmlrdXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpIGluaSBtZXJ1cGFrYW4gcGFyZW50IGRhcmkgc3Via2F0ZWdvcmkgYmVyaWt1dCBpbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnQW5kYSB5YWtpbiBha2FuIG1lbmdoYXB1cyBhcnRpa2VsIEZBUSBpbmk/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRWtzcGxvcmVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gQ2VwYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0thcmFrdGVyIGJlYmFzIGRpcGVya2VuYW5rYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVuY2FyaWFuIExlYmloIExhbmp1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3Via2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdTdWJrYXRlZ29yaSB0aWRhayBkaXRlbXVrYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ1Jpd2F5YXQgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc2kgc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQnVhdFdha3R1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0RhdGEgSnVybmFsIEZBUSB0aWRhayBkaXRlbXVrYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ01hbmFqZW1lbiBCYWhhc2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ1RhbWJhaCBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnVGFtYmFoIEJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdCBCYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0FuZGEgeWFraW4gYWthbiBtZW5naGFwdXMgYmFoYXNhIGluaT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnQW5kYSB0aWRhayBkYXBhdCBtZW5naGFwdXMgYmFoYXNhIGluaS4gQmFoYXNhIGluaSBkaWd1bmFrYW4gcGFkYSBzYWxhaCBzYXR1IGFydGlrZWwgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0JhaGFzYSBpbmkgZGlndW5ha2FuIHBhZGEgQXJ0aWtlbC1hcnRpa2VsIEZBUSBiZXJpa3V0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnUGVuZ2F0dXJhbiBLb250ZWtzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlrZWwgRkFRIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ1RpZGFrIGRpdGVtdWthbiBkYXRhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RhcmkgNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdLYXRhIGt1bmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdQaWxpaCAoY29udG9oOiBTYW1hIERlbmdhbiAxMCBhdGF1IExlYmloIEJlc2FyIGRhcmkgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1BlcmluZ2thdCAoY29udG9oOiBTYW1hIGRlbmdhbiAyNSUgYXRhdSBMZWJpaCBCZXNhciBkYXJpIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdEaXNldHVqdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGVyYWtoaXIgZGlydWJhaCBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnV2FrdHUgUGVtYnVhdGFuIEFydGlrZWwgRkFRIChzZWJlbHVtL3NldGVsYWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1dha3R1IFBlbWJ1YXRhbiBBcnRpa2VsIEZBUSAoYW50YXJhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1dha3R1IFBlcnViYWhhbiBBcnRpa2VsIEZBUSAoc2ViZWx1bS9zZXRlbGFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdXYWt0dSBQZXJ1YmFoYW4gQXJ0aWtlbCBGQVEgKGFudGFyYSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRVGVrc2xlbmdrYXAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUGVtaWxpaGFuIFByb2ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnUGlsaWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1RpZGFrIGFkYSBwZW5nYXR1cmFuIHBlbWlsaWhhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1BlbWlsaWhhbiBraHVzdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnY29udG9oOiBTYW1hIERlbmdhbiAxMCBhdGF1IExlYmloIEJlc2FyIGRhcmkgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1BlcmluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnVGlkYWsgYWRhIHBlbmdhdHVyYW4gcGVyaW5na2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdQZXJpbmdrYXQga2h1c3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnY29udG9oOiBTYW1hIGRlbmdhbiAyNSUgYXRhdSBMZWJpaCBCZXNhciBkYXJpIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1dha3R1IFBlbWJ1YXRhbiBBcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ1dha3R1IFBlcnViYWhhbiBBcnRpa2VsIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1BlcmluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1BlbWlsaWhhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdUdGRhayBkaXRlbXVrYW4gcGVtaWxpaGFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnQmVsdW0gYWRhIFBlbWlsaWhhbiEgSmFkaWxhaCB5YW5nIHBlcnRhbWEgbWVsYWt1a2FuIHBlbWVyaW5na2F0YW4gYXJ0aWtlbCBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnVW5kdWggTGFtcGlyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdVbnR1ayBtZW1idWthIHRhdXRhbiBwYWRhIGJhZ2lhbiBkZXNrcmlwc2kgYmVyaWt1dCwgQW5kYSBoYXJ1cyBtZW5la2FuIHRvbWJvbCBDdHJsIGF0YXUgQ21zIGF0YXUgU2hpZnQgc2FtYmlsIG1lbmVrYW4gdGF1dGFubnlhICh0ZXJnYW50dW5nIHBhZGEgU2lzdGVtIE9wZXJhc2kgZGFuIFBlcmFtYmFuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ1NlYmVyYXBhIGJlc2FyIGFydGlrZWwgaW5pIG1lbWJhbnR1PyBNb2hvbiBiZXJpa2FuIHBlcmluZ2thdCBBbmRhIGRhbiBpa3V0IG1lbWJhbnR1IERhdGFiYXNlIEZBUS4gVGVyaW1hIGthc2loISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ3RpZGFrIG1lbWJhbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3NhbmdhdCBtZW1iYW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnVGFtYmFoa2FuIGp1ZHVsIEZBUSBwYWRhIHN1YmplayBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ01hc3Vra2FuIFRla3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ01hc3Vra2FuIFNlbHVydWggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ01hc3Vra2FuIFRhdXRhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ01hc3VrYW4gVGVrcyBkYW4gVGF1dGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnTWFzdWtrYW4gU2VsdXJ1aCBMaW5rIGRhbiBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdUaWRhayBkaXRlbXVrYW4gYXJ0aWtlbCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdQZW5jYXJpYW4gVGVrc3BlbnVoIHBhZGEgQXJ0aWtlbCBGQVEgKGNvbnRvaDogIkpvaG4qbiIgYXRhdSAiV2lsbCIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnQmF0YXNhbiBQZW1pbGloYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIHlhbmcgdGVsYWggZGlwaWxpaC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JhdGFzYW4gUGVyaW5na2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0hhbnlhIEFydGlrZWwgeWFuZyBtZW1pbGlraSBwZXJpbmdrYXQuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdQZW1iYXRhc2FuIHdha3R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpYnVhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpYnVhdCBwYWRhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdQZW5jYXJpYW4tUHJvZmlsIHNlYmFnYWkgVGVtcGxhdGU/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTm9tb3IgQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0NhcmkgYXJ0aWtlbCBkZW5nYW4ga2F0YSBrdW5jaSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdLZW1iYWxpIGtlIEVrc3Bsb3JlciBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdTZWJ1YWgga2F0ZWdvcmkgaGFydXMgbWVtaWxpa2kgbmFtYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0thdGVnb3JpIGluaSBzdWRhaCBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaXVwZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaXRhbWJhaGthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnSGFwdXMgS2F0ZWdvcmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0p1cm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmFtYSBkaWJ1dHVoa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0JhaGFzYSBpbmkgc3VkYWggYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXBlcmJhcnVpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXRhbWJhaGthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnSGFwdXMgQmFoYXNhICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdIYXNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1BlcmJhcnVhbiB0ZXJha2hpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdCaWRhbmcgZGluYW1pcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSAlcyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdUaWRhayBhZGEgaGFzaWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOb21vciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUZXJpbWEga2FzaWggYXRhcyBwaWxpaGFubnlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0FuZGEgc3VkYWggcGVybmFoIG1lbWlsaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnVGlkYWsgYWRhIHBlcmluZ2thdCB5YW5nIGRpcGlsaWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0NldGFrIEFydGlrZWwgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtlbCBGQVEgKHRlcmJhcnUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpa2VsIEZBUSAodGVyYWtoaXIgZGlydWJhaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbCBGQVEgKDEwIHRlcmF0YXMpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0FydGlrZWwgaW5pIGtvc29uZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnQXJ0aWtlbCBGQVEgdGVyYWtoaXIgZGlidWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlrZWwgRkFRIHBhbGluZyBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdBcnRpa2VsIEZBUSAxMCB0ZXJhdGFzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdla3N0ZXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAndW11bSc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ1NlYnVhaCBmaWx0ZXIgdW50dWsgb3V0cHV0IEhUTUwgdW50dWsgbWVuYW1iYWhrYW4gdGF1dGFuIHRlcmthaXQgc3RyaW5nIHlhbmcgZGl0ZW50dWthbi4gRHVhIGJ1YWggbWFzdWthbiBkaXBlcmtlbmFua2FuIHVudHVrIEVsZW1lbiBHYW1iYXIuIFBlcnRhbWEgbmFtYSBkYXJpIGdhbWJhciAoY29udG9oOiBmYXEucG5nKS4gUGFkYSBrYXN1cyBpbmkgcGF0aCBnYW1iYXIgT1RPQk8geWFuZyBkaWd1bmFrYW4uIEtlbXVuZ2tpbmFuIGtlZHVhIGFkYWxhaCBtZW1hc3Vra2FuIHRhdXRhbiBrZSBkYWxhbSBnYW1iYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1dhcm5hIENTUyB1bnR1ayBoYXNpbCBwZW1pbGloYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdXYWt0dSBDYWNoZSBVbnR1ayBLZWx1YXIgZGFsYW0gaXRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ01hbmFqZW1lbiBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdQb3Npc2kgZGVzaW1hbCBwYWRhIGhhc2lsIHBlbWlsaWhhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05hbWEga2F0ZWdvcmkgZGVmYXVsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0JhaGFzYSBkZWZhdWx0IHVudHVrIGFydGlrZWwgRkFRIHBhZGEgbW9kZSBzYXR1IGJhaGFzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnRGVmYXVsdCB1a3VyYW4gbWFrc2ltdW0ganVkdWwgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpdGFtcGlsa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdEZWZhdWx0IHByaW90aXRhcyBkYXJpIHRpa2V0IHVudHVrIHBlcnNldHVqdWFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnU3RhdHVzIGRlZmF1bHQgdW50dWsgZW50cmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGF0dXMgZGVmYXVsdCB0aWtldCB1bnR1ayBwZXJzZXR1anVhbiBwYWRhIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1RpcGUgdGlrZXQgZGVmYXVsdCB1bnR1ayBwZXJzZXR1anVhbiBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnTmlsYWkgZGVmYXVsdCB1bnR1ayBwYXJhbWV0ZXIgQWtzaSB1bnR1ayBmcm9udGVuZCB1bXVtLiBQYXJhbWV0ZXIgYWtzaSBkaWd1bmFrYW4gcGFkYSBza3JpcCBkYXJpIFNpc3RlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGppa2EganVkdWwgRkFRIGhhcnVzIHRlcnNhbWJ1bmcga2Ugc3ViamVrIGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHNlYnVhaCBnYW1iYXJhbiBtb2R1bCB1bnR1ayBtZW5hbXBpbGthbiB0YW1waWxhbiBrZWNpbCBkYXJpIHNlYnVhaCBqdXJuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHNlYnVhaCBnYW1iYXJhbiBtb2R1bCB1bnR1ayBtZW5hbXBpbGthbiB0YW1waWxhbiBrZWNpbCBkYXJpIHNlYnVhaCBkYWZ0YXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVudHVrYW4gYXRyaWJ1dCBkZWZhdWx0IEZBUSB1bnR1ayBwZW55b3J0aXJhbiBGQVEgZGFsYW0gcGVuY2FyaWFuIEZBUSBkYXJpIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIGRhbGFtIFBlbmNhcmlhbiBGQVEgZGFyaSBhbnRhcm11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVudHVrYW4gYXRyaWJ1dCBzdGFuZGFyIEZBUSB1bnR1ayBwZW55b3J0aXJhbiBkYWxhbSBwZW5jYXJpYW4gRkFRIHVudHVrIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgc3RhbmRhciBGQVEgdW50dWsgcGVueW9ydGlyYW4gRkFRIGRhbGFtIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgc3RhbmRhciBGQVEgdW50dWsgcGVueW9ydGlyYW4gRkFRIGRhbGFtIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgc3RhbmRhciBGQVEgdW50dWsgcGVueW9ydGlyYW4gRkFRIGRhbGFtIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHVydXRhbiBzdGFuZGFyIEZBUSBkYWxhbSBoYXNpbCBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIGFnZW4uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdUZW50dWthbiB1cnV0YW4gc3RhbmRhciBGQVEgZGFsYW0gaGFzaWwgRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnVGVudHVrYW4gdXJ1dGFuIHN0YW5kYXIgRkFRIGRhbGFtIGhhc2lsIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgdW11bS4gTmFpazogVGVybGFtYSBkaSBhdGFzLiBUdXJ1bjogVGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdUZW50dWthbiB1cnV0YW4gc3RhbmRhciBGQVEgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHBhZGEgYW50YXJtdWthIGFnZW4uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnVGVudHVrYW4gdXJ1dGFuIHN0YW5kYXIgRkFRIGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHVydXRhbiBzdGFuZGFyIEZBUSBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gcGFkYSBhbnRhcm11a2EgdW11bS4gTmFpazogVGVybGFtYSBkaSBhdGFzLiBUdXJ1bjogVGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgcGVuY2FyaWFuIEZBUSBzdGFuZGFyIHlhbmcgZGl0YW1waWxrYW4gdW50dWsgbGF5YXIgcGVuY2FyaWFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdUZW50dWthbiBpbmZvcm1hc2kgeWFuZyBha2FuIGRpIG1hc3VrYW4ga2UgZGFsYW0gc2VidWFoIFRpa2V0IGJlcmRhc2FyIEZBUS4gIkZBUSBsZW5na2FwIiBiZXJpc2kgdGVrcywgbGFtcGlyYW4sIGRhbiBnYW1iYXIgZGkgYmFyaXNhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnVGVudHVrYW4gcGFyYW1ldGVyIHVudHVrIGJhY2tlbmQgZGFzYm9yLiAiTGltaXQiIG1lbmVudHVrYW4ganVtbGFoIGVudHJpIHlhbmcgZGkgdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0LiAiR3JvdXAiIGRpIGd1bmFrYW4gdW50dWsgbWVtYmF0YXNpIGFrc2VzIGtlIHBsdWdpbiAobWlzYWxueWEgR3J1cDogYWRtaW47Z3J1cDE7Z3J1cDI7KS4gIkRlZmF1bHQiIG1lbmdpbmRpa2FzaWthbmppa2EgcGx1Z2luIGRpYWt0aWZrYW4gc2VjYXJhIGRlZmF1bHQgYXRhdSBqaWthIHBlbmdndW5hIHBlcmx1IG1lbmdha3RpZmthbm55YSBzZWNhcmEgbWFudWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdUZW50dWthbiBrb2xvbSB5YW5nIGRpdGFtcGlsa2FuIGRpIEVrc3Bsb3JlciBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXBlbmdhcnVoaSBwb3Npc2kga29sb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnVGVudHVrYW4ga29sb20geWFuZyBkaSB0YW1waWxrYW4gZGkganVybmFsIEZBUS4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcGVuZ2FydWhpIHBvc2lzaSBrb2xvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGtvbG9tIHlhbmcgZGkgdGFtcGlsa2FuIGRpZGFsYW0gcGVuY2FyaWFuIEZBUS4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcGVuZ2FydWhpIHBvc2lzaSBrb2xvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdUZW50dWthbiBkaW1hbmEgdGF1dGFuIFwnTWFzdWtrYW4gRkFRXCcgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2kgZGFyaSBpdGVtIHRla3MgZmllbGQgYmViYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0hhcHVzIEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ3ViYWggRkFRIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGlma2FuIG11bHRpYmFoYXNhIHBhZGEgbW9kdWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpZmthbiBtZWthbmlzbWUgdm90aW5nIHBhZGEgbW9kdWwgRkEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFa3NwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdKdXJuYWwgZ2FtYmFyYW4gYmF0YXMgImtlY2lsIiAgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnR2FtYmFyYW4gYmF0YXMgIktlY2lsIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdQZW5jYXJpYW4gcGVuZXJ1cyBiYWNrZW5kIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZpZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGaWVsZDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cCB1bnR1ayBwZXJzZXR1anVhbiBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnU2VqYXJhaCBkYXJpIEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ01hc3VrYW4gYmlkYW5nIGludGVybmFsIHBhZGEgVGlrZXQgYmVyZGFzYXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ01hc3VrYW4gbmFtYSBzZXRpYXAgYmlkYW5nIHBhZGEgVGlrZXQgYmVyZGFzYXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0FudGFybXVrYSBkaW1hbmEgcGVuY2FyaWFuIGNlcGF0IGhhcnVzIGRpIHRhbXBpbGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSnVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gQmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1RhdXRrYW4gb2JqZWsgbGFpbm55YSBrZSBpdGVtIEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGFmdGFyIGplbmlzIHN0YXR1cyB5YW5nIGRhcGF0IGRpZ3VuYWthbiBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEYWZ0YXIgamVuaXMgc3RhdHVzIHlhbmcgZGFwYXQgZGlndW5ha2FuIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RhZnRhciBqZW5pcyBzdGF0dXMgeWFuZyBkYXBhdCBkaWd1bmFrYW4gcGFkYSBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIEVrc3Bsb3JlciBGQVEgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwgRWtzcGxvcmVyIEZBUSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIG1ha3NpbWFsIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBkYWxhbSBoYXNpbCBFa3NwbG9yZXIgRkFRIGRpIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIG1ha3NpbWFsIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBkYWxhbSBoYXNpbCBqdXJuYWwgRkFRIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwganVybmFsIEZBUSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIGp1cm5hbCBGQVEgZGkgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VrdXJhbiBtYWtzaW1hbCBKdWR1bCBkaSBkYWxhbSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIGRpIGRhbGFtIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VrdXJhbiBtYWtzaW1hbCBKdWR1bCBkaSBkYWxhbSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIGRpIGRhbGFtIFBlbmNhcmlhbiBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gUGVuY2FyaWFuIEZBUSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBQZW5jYXJpYW4gRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBKb3VybmFsIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW5naGFzaWxrYW4gcHJvZmlsIEhUTUwgUGVuY2FyaWFuVGVyYnVrYSB1bnR1ayBQZW5jYXJpYW4gcGVuZGVrIEZBUSBkaSBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnQXJ0aWtlbCBGQVEgYmFydSBtZW1idXR1aGthbiBlcnNldHVqdWFuIHNlYmVsdW0gZGlwdWJsaWthc2lrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGl0YW1waWxrYW4gcGFkYSBFa3NwbG9yZXIgRkFRIGRpIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIHBhZGEgc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBwZW5jYXJpYW4gcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gcGFkYSBzZXRpYXAgaGFsYW1hbiBkYXJpIGhhc2lsIHBlbmNhcmlhbiBwYWRhIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0p1bWxhaCBpdGVtIHlhbmcgZGl0YW1waWxrYW4gZGFsYW0gcGVydWJhaGFuIHRlcmFraGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0p1bWxhaCBpdGVtIHlhbmcgZGkgdGFtcGlsa2FuIGRhbGFtIHBlbWJ1YXRhbiB0ZXJha2hpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdKdW1sYWggaXRlbSB5YW5nIGRpdGFtcGlsa2FuIGRhbGFtIDEwIGZpdHVyIHRlcmF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaW1hbmEgaXRlbSBGQVEgZGkgdGFtcGlsa2FuKSBqdXJuYWwga2VjaWwgZ2FtYmFyYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpbWFuYSBpdGVtIEZBUSBkaSB0YW1waWxrYW4pIGdhbWJhcmFuIGtlY2lsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdDZXRhayBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdBbnRyaWFuIHVudHVrIGRpc2V0dWp1aW55YSBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1BlcmluZ2thdGthbiB1bnR1ayBtZW1pbGloLiAgS3VuY2kgaGFydXMgZGFsYW0gcGVyc2VudGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQ2FyaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdUZW50dWthbiB0aW5nZ2kgZGVmYXVsdCAoZGFsYW0gcGlrc2VsKSAgcGFkYSBiaWRhbmcgc2ViYXJpcyBIVE1MIHBhZGEgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHRpbmdnaSBkZWZhdWx0IChkYWxhbSBwaWtzZWwpICBwYWRhIGJpZGFuZyBzZWJhcmlzIEhUTUwgcGFkYSBDdXN0b21lckZBUVpvb20gKGRhbiBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnVGVudHVrYW4gdGluZ2dpIG1ha3NpbWFsIChkYWxhbSBwaWtzZWwpICBwYWRhIGJpZGFuZyBzZWJhcmlzIEhUTUwgcGFkYSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnVGVudHVrYW4gdGluZ2dpIG1ha3NpbWFsIChkYWxhbSBwaWtzZWwpICBwYWRhIGJpZGFuZyBzZWJhcmlzIEhUTUwgcGFkYSBDdXN0b21lckZBUVpvb20gKGRhbiBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdUYW1waWxrYW4gdG9tYm9sICJNYXN1a2FuIHRhdXRhbiBGQVEiIHBhZGEgQWdlbnRGQVFab29tU21hbGwgdW50dWsgYXJ0aWtlbCBGQVEgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdUYW1wbGlrYW4gdG9tYm9sICJNYXN1a2FuIHRla3MgJiB0YXV0YW4gRkFRIiAvICJNYXN1a2FuIEZBUSAmIFRhdXRhbiBsZW5na2FwIiBwYWRhIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGFydGlrZWwgRkFRIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdUYW1waWxrYW4gdG9tYm9sICJNYXN1a2FuIHRla3MgRkFRIiAvICJNYXN1a2FuIEZBUSBsZW5na2FwIiBwYWRhIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdUYW1waWxrYW4gYXJ0aWtlbCBGQVEgZGVuZ2FuIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1RhbXBpbGthbiBKYWx1ciBGQVEgaXlhL3RpZGFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnVGFtcGlsa2FuIGl0ZW0gZGFyaSBzdWJrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIGl0ZW0gdGVyYWtoaXIgeWFuZyBkaSB1YmFoIHBhZGEgYW50YXJtdWthIHlhbmcgZGkgdGVudHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUYW1waWxrYW4gaXRlbSB0ZXJha2hpciB5YW5nIGRpIGNpcHRha2FuIHBhZGEgYW50YXJtdWthIHlhbmcgZGkgdGVudHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUYW1waWxrYW4gMTAgaXRlbSB0ZXJhdGFzIHBhZGEgYW50YXJtdWthIHlhbmcgZGkgdGVudHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdUYW1waWxrYW4gcGVtaWxpaGFuIHBhZGEgYW50YXJtdWthIHlhbmcgZGkgdGVudHVrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRhdXRhbiBkaSBtZW51IHlhbmcgbWVuZ2l6aW5rYW4gaHVidW5nYW4gRkFRIGRlbmdhbiBvYmplayBsYWluIGRpIHRhbXBpbGFuIHpvb20gc2VwZXJ0aSBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB5YW5nIG1lbmdpemlua2FuIHBlbmdoYXB1c2FuIEZBUSBwYWRhIHRhbXBpbGFuIHpvb20gcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBGQVEgcGFkYSB0YW1waWxhbiB6b29tbnlhIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRhdXRhbiBwYWRhIG1lbnUgdW50dWsgbWVuZ3ViYWggRkFRIHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIGtlbWJhbGkgcGFkYSBGQVEgcGFkYSB0YW1waWxhbiB6b29tIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmNldGFrIEZBUSBwYWRhIHRhbXBpbGFuIHpvb21ueWEgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdHZWphbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdQZW5naWRlbnRpZmlrYXNpIHVudHVrIEZBUSwgTWlzYWxueWEgRkFRIywgS0IjLCBNeUZBUSMuIFN0YW5kYXJueWEgYWRhbGFoIEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1BlbmdhdHVyYW4gaW5pIG1lbmRlZmluaXNrYW4gYmFod2Egb2JqZWsgXCdGQVFcJyBkYXBhdCBkaSBodWJ1bmdrYW4gZGVuZ2FuIG9iamVrIFwnRkFRXCcgbGFpbiBkZW5nYW4gbWVuZ2d1bmFrYW4gdHlwZSB0YXV0YW4gXCdOb3JtYWxcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdQZW5nYXR1cmFuIGluaSBtZW5kZWZpbmlza2FuIGJhaHdhIG9iamVrIFwnRkFRXCcgZGFwYXQgZGkgaHVidW5na2FuIGRlbmdhbiBvYmplayBcJ0ZBUVwnIGxhaW4gZGVuZ2FuIG1lbmdndW5ha2FuIHR5cGUgdGF1dGFuIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnUGVuZ2F0dXJhbiBpbmkgbWVuZGVmaW5pc2thbiBiYWh3YSBvYmplayBcJ0ZBUVwnIGRhcGF0IGRpIGh1YnVuZ2thbiBkZW5nYW4gb2JqZWsgXCdUaWtldFwnIGxhaW4gZGVuZ2FuIG1lbmdndW5ha2FuIHR5cGUgdGF1dGFuIFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnUGVuZ2F0dXJhbiBpbmkgbWVuZGVmaW5pc2thbiBiYWh3YSBvYmplayBcJ0ZBUVwnIGRhcGF0IGRpIGh1YnVuZ2thbiBkZW5nYW4gb2JqZWsgXCdUaWNrZXRcJyBsYWluIGRlbmdhbiBtZW5nZ3VuYWthbiB0eXBlIHRhdXRhbiBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdJc2kgdGlrZXQgdW50dWsgcGVyc2V0dWp1YW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTdWJqZWsgdGlrZXQgdW50dWsgcGVyc2V0dWp1YW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdJdGVtIHRvb2xiYXIgdW50dWsgamFsYW4gcGludGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdla3N0ZXJuYWwgKHBlbGFuZ2dhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybmFsIChhZ2VuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICd1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZ2dpdW5nZXJlIGFydGljb2xvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1Bhcm9sZSBjaGlhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdVbmEgY2F0ZWdvcmlhIMOoIG9iYmxpZ2F0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0FwcHJvdmF6aW9uZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uaSBDYXRlZ29yaWUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWdnaXVuZ2kgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0FnZ2l1bmdpIENhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnTW9kaWZpY2EgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU290dG9jYXRlZ29yaWEgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTZWxlemlvbmFyZSBhbG1lbm8gdW4gZ3J1cHBvIGRpIHBlcm1lc3NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cHBvIGRpIHRlY25pY2kgdGhlIHB1w7IgYWNjZWRlcmUgYWdsaSBhcml0Y29saSBpbiBxdWVzdGEgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTYXJhbm5vIHZpc2liaWxpIGNvbWUgY29tbWVudGkgaW4gRXhwbG9yZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdTaSBkZXNpZGVyYSB2ZXJhbWVudGUgZWxpbWluYXJlIHF1ZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm9uIMOoIHBvc3NpYmlsZSBlbGltaW5hcmUgcXVlc3RhIGNhdGVnb3JpYS4gVmllbmUgdXRpbGl6emF0YSBpbiBhbG1lbm8gdW4gYXJ0aWNvbG8gZS9vIMOoIGNvbGxlZ2F0YSBhZCBhbG1lbm8gdW5cJ2FsdHJhIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ1F1ZXN0YSBjYXRlZ29yaWEgw6ggdXRpbGl6emF0YSBuZWwoaSkgc2VndWVudGUoaSkgYXJ0aWNvbGkgZGVsbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ1F1ZXN0YSBjYXRlZ29yaWEgw6ggY2Fwb2dydXBwbyBkZWxsZSBzZWd1ZW50aSBzb3R0b2NhdGVnb3JpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdTaSBkZXNpZGVyYSB2ZXJhbWVudGUgZWxpbWluYXJlIHF1ZXN0byBhcnRpY29sbyBkaSBGQVE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXNwbG9yYXRvcmUgZGkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1JpY2VyY2EgVmVsb2NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZCBzb25vIHBlcm1lc3NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdSaWNlcmNhIEF2YW56YXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTb3R0b2NhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY29saSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdOZXNzdW5hIHNvdHRvY2F0ZWdvcmlhIHRyb3ZhdGEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdTdG9yaWNvIGRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnV0byBkZWxsbyBzdG9yaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdJc3RhbnRlIGRpIGNyZWF6aW9uZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOZXNzdW4gZGF0byB0cm92YXRvIG5lbCBSaWVwaWxvZ28gRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uZSBMaW5ndWFnZ2lvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZ2dpdW5naSBsaW5ndWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnQWdnaXVuZ2kgTGluZ3VhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdNb2RpZmljYSBkZWxsYSBsaW5ndWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1NpIGRlc2lkZXJhIHZlcmFtZW50ZSBlbGltaW5hcmUgcXVlc3RhIGxpbmd1YT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTm9uIMOoIHBvc3NpYmlsZSBlbGltaW5hcmUgcXVlc3RhIGxpbmd1YS4gRVwnIHV0aWxpenphdGEgaW4gYWxtZW5vIHVuIGFydGljb2xvIGRlbGxhIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdRdWVzdG8gbGluZ3VhZ2dpbyDDqCB1dGlsaXp6YXRvIG5lbChpKSBzZWd1ZW50ZShpKSBhcnRpY29saSBkZWxsYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdJbXBvc3RhemlvbmkgZGkgY29udGVzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWNvbGkgRkFRIHBlciBwYWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnTmVzc3VuIGRhdG8gZGVsbGEgRkFRIHRyb3ZhdG8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdzdSA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ1Bhcm9sYSBjaGlhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdG8gKGVzOiBVZ3VhbGUgMTAgbyBNYWdnaW9yZSBkaSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnUGVyY2VudHVhbGUgKGVzOiBVZ3VhbGUgMjUlIG8gTWFnZ2lvcmUgZGkgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0FwcHJvdmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVbHRpbWEgbW9kaWZpY2EgZWZmZXR0dWF0YSBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0lzdGFudGUgZGkgY3JlYXppb25lIGRlbGxcJ0FydGljb2xvIEZBUSAocHJpbWEvZG9wbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnSXN0YW50ZSBkaSBjcmVhemlvbmUgZGVsbFwnQXJ0aWNvbG8gRkFRIChmcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSXN0YW50ZSBkaSBtb2RpZmljYSBkZWxsXCdBcnRpY29sbyBGQVEgKHByaW1hL2RvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0lzdGFudGUgZGkgbW9kaWZpY2EgZGVsbFwnQXJ0aWNvbG8gRkFRIChmcmEpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUUZ1bGxUZXh0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQ2VyY2EgbmVsbGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnU2VsZXppb25hIFByb2ZpbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1ZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ05lc3N1bmEgaW1wb3N0YXppb25lIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RpIHNwZWNpZmljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdlcy4gVWd1YWxlIGEgMTAgbyBNYWdnaW9yZSBkaSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnUGVyY2VudHVhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ05vbiBjaSBzb25vIGltcG9zdGF6aW9uaSBzdWxsYSBwZXJjZW50dWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUGVyY2VudHVhbGUgc3BlY2lmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZXMuIFVndWFsZSBhIDI1JSBvIE1hZ2dpb3JlIGRpIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0lzdGFudGUgZGkgQ3JlYXppb25lIGRlbGxcJ0FydGljb2xvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0lzdGFudGUgZGkgbW9kaWZpY2EgZGVsbFwnQXJ0aWNvbG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWxsZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnVmFsdXRhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05lc3N1biB2b3RvIHRyb3ZhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOZXNzdW4gdm90byB0cm92YXRvISBQdW9pIGVzc2VyZSBpbCBwcmltbyBhIHZvdGFyZSBxdWVzdGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnU2NhcmljYSBBbGxlZ2F0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1BlciBhcHJpcmUgaSBjb2xsZWdhbWVudGkgbmVpIHNlZ3VlbnRpIGJsb2NjaGkgZGVzY3JpemlvbmUsIHBvdHJlYmJlIGVzc2VyZSBuZWNlc3NhcmlvIHByZW1lcmUgQ3RybCBvIENtZCBvIFNoaWZ0IG1lbnRyZSBzaSBjbGljY2Egc3VsIGNvbGxlZ2FtZW50byAoYSBzZWNvbmRhIGRlbCBicm93c2VyIGUgZGVsIFNpc3RlbWEgT3BlcmF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdWaSDDqCBzdGF0byB1dGlsZSBxdWVzdG8gYXJ0aWNvbG8/IFZpIHByZWdoaWFtbyBkaSBkYXJlIHVuIHZvdG8gcGVyIGNvbnRyaWJ1aXJlIGEgbWlnbGlvcmFyZSBpbCBEYXRhYmFzZSBkZWxsZSBGQVEuIEdyYXppZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdub24gw6ggc3RhdG8gdXRpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbW9sdG8gdXRpbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FnZ2l1bmdpIGlsIHRpdG9sbyBkZWxsYSBGQVEgbmVsIHNvZ2dldHRvIGRlbGxcJ2FydGljb2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VyaXNjaSBpbCB0ZXN0byBkZWxsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJpc2NpIHVuYSBGQVEgY29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJpc2NpIEZBUSBMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcmlyZSBUZXN0byBlIGxpbmsgZGVsbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdJbnNlcmlyZSBsYSBGQVEgY29tcGxldGEgZSBpbCBMaW5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTmVzc3VuIGFydGljb2xvIEZBUSB0cm92YXRvLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1JpY2VyY2EgdGVzdHVhbGUgbmVnbGkgYXJ0aWNvbGkgRkFRIChhZCBlc2VtcGlvICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpemlvbmkgc3VsIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1NvbG8gYXJ0aWNvbGkgZGkgRkFRIGNvbiB2b3RpLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpemlvbmkgc3VsbGUgcGVyY2VudHVhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnU29sbyBhcnRpY29saSBkaSBGQVEgY29uIHBlcmNlbnR1YWxlLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpemlvbmkgZGkgdGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ1NvbG8gYXJ0aWNvbGkgZGkgRkFRIGNyZWF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdTb2xvIGFydGljb2xpIGRpIEZBUSBjcmVhdGkgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbG8gZGkgUmljZXJjYSBjb21lIE1vZGVsbG8/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTnVtZXJvIEFydGljb2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQ2VyY2EgYXJ0aWNvbGkgY29uIHBhcm9sYSBjaGlhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHViYmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1Rvcm5hIGFsIG5hdmlnYXRvcmUgZGVsbGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnVW5hIGNhdGVnb3JpYSBkZXZlIGF2ZXJlIHVuIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdDYXRlZ29yaWEgZXNpc3RlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGFnZ2lvcm5hdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGFnZ2l1bnRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFbGltaW5hIGNhdGVnb3JpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnQ3Jvbm9sb2dpYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdSZWdpc3RybyBkZWxsZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnSWwgbm9tZSDDqCBvYmJsaWdhdG9yaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnTGluZ3VhZ2dpbyBlc2lzdGVudGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMaW5ndWFnZ2lvIEZBUSBhZ2dpb3JuYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnTGluZ3VhZ2dpbyBGQVEgYWdnaXVudG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ0VsaW1pbmEgTGluZ3VhICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSaXN1bHRhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdVbHRpbW8gYWdnaW9ybmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdDYW1waSBkaW5hbWljaSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVzc3VuIHJpc3VsdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ051bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdHcmF6aWUgcGVyIGlsIHR1byB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0hhaSBnacOgIHZvdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOZXNzdW5hIHZhbHV0YXppb25lIHNlbGV6aW9uYXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnU3RhbXBhIGFydGljb2xvIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGljb2xpIEZBUSAobnVvdmkgY3JlYXRpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWNvbGkgRkFRIChyZWNlbnRlbWVudGUgbW9kaWZpY2F0aSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWNvbGkgRkFRIChQcmltaSAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnUXVlc3RvIGFydGljb2xvIMOoIHZ1b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdVbHRpbWkgYXJ0aWNvbGkgRkFRIGNyZWF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdVbHRpbWkgYXJ0aWNvbGkgRkFRIGFnZ2lvcm5hdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpY29saSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkaSBjb250ZW51dG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdlc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnVW4gZmlsdHJvIHBlciBsXCdvdXRwdXQgSFRNTCBwZXIgYWdnaXVuZ2VyZSBjb2xsZWdhbWVudGkgYWQgdW5hIHN0cmluZ2EgZGVmaW5pdGEuIExcJ2VsZW1lbnRvIEltbWFnaW5lIHBlcm1ldHRlIGR1ZSB0aXBpIGRpIGluZ3Jlc3NvLiBQcmltbyBpbCBub21lIGRpIHVuXCdpbW1hZ2luZSAoYWQgZXNlbXBpbyBmYXEucG5nKS4gSW4gcXVlc3RvIGNhc28gdmVycsOgIHV0aWxpenphdG8gaWwgcGVyY29yc28gZGVsbGUgaW1tYWdpbmkgZGkgT1RPQk8uIExhIHNlY29uZGEgcG9zc2liaWxpdMOgIMOoIHF1ZWxsYSBkaSBpbnNlcmlyZSBpbCBjb2xsZWdhbWVudG8gYWxsXCdpbW1hZ2luZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29sb3JlIENTUyBwZXIgaWwgcmlzdWx0YXRvIGRlbCB2b3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnVGVtcG8gZGkgZHVyYXRhIG5lbGxhIENhY2hlIGRlbGxlIHZvY2kgZGkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uZSBDYXRlZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnUG9zaXppb25pIGRlY2ltYWxpIGRlbCByaXN1bHRhdG8gZGVsIHZvdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIFByZWRlZmluaXRvIGRlbGxhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0xpbmd1YSBwcmVkZWZpbml0YSBwZXIgZ2xpIGFydGljb2xpICBGQVEgcGVyIGxhIG1vZGFsaXTDoCBzaW5nb2xhIGxpbmd1YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnRGVmYXVsdCBudW1lcm8gZGkgY2F0dGVyaSBkZWwgdGl0b2xvIGRpIHVuYSBGQVEgZGEgdmlzdWFsaXp6YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaXTDoCBwcmVkZWZpbml0YSBkZWkgdGlja2V0IHBlciBsXCdhcHByb3ZhemlvbmUgZGkgYXJ0aWNvbGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnU3RhdG8gZGkgZGVmYXVsdCBwZXIgbGEgdm9jZSBkZWxsZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGF0byBQcmVkZWZpbml0byBkZWkgdGlja2V0IHBlciBsXCdhcHByb3ZhemlvbmUgZGkgYXJ0aWNvbGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBvIHByZWRlZmluaXRvIGRlaSB0aWNrZXQgcGVyIGxcJ2FwcHJvdmF6aW9uZSBkaSBhcnRpY29saSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdJbCB2YWxvcmUgcHJlZGVmaW5pdG8gcGVyIGlsIHBhcmFtZXRybyBBemlvbmUgcGVyIGlsIGZyb250ZW5kIHB1YmJsaWNvLiBJbCBwYXJhbWV0cm8gQXppb25lIHZpZW5lIHV0aWxpenphdG8gbmVnbGkgc2NyaXB0IGRlbCBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRGVmaW5pc2NlIHNlIGlsIHRpdG9sbyBGQVEgZG92cmViYmUgZXNzZXJlIGNvbmNhdGVuYXRvIGNvbiBsXCdvZ2dldHRvIGRlbGxcJ2FydGljb2xvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHVuIG1vZHVsbyBwYW5vcmFtaWNhIHBlciBtb3N0cmFyZSB1bmEgdmlzdGEgYWJicmV2aWF0YSBkaSB1bmEgbGlzdGEgZGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW4gbW9kdWxvIHBhbm9yYW1pY2EgcGVyIG1vc3RyYXJlIGxhIHZpc3RhIHBpY2NvbGEgZGkgdW5hIGxpc3RhIGRpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgRkFRIHByZWRlZmluaXRvIG5lbCByaXN1bHRhdG8gRkFRIEV4cGxvcmVyIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuIFN1OiBtZW5vIHJlY2VudGUgc3VsbGEgcGFydGUgc3VwZXJpb3JlLiBHacO5OiBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBGQVEgRXhwbG9yZXIgZGVsbFwnaW50ZXJmYWNjaWEgcHViYmxpY2EuIFN1OiBtZW5vIHJlY2VudGUgaW4gY2ltYS4gR2nDuTogcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgRkFRIHByZWRlZmluaXRvIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuIFN1OiBtZW5vIHJlY2VudGUgaW4gY2ltYS4gR2nDuTogcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgRkFRIHByZWRlZmluaXRvIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBuZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLiBTdTogbWVubyByZWNlbnRlIGluIGNpbWEuIEdpw7k6IHBpw7kgcmVjZW50ZSBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIHB1YmJsaWNhLiBTdTogbWVubyByZWNlbnRlIGluIGNpbWEuIEdpw7k6IHBpw7kgcmVjZW50ZSBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgdmlzaWJpbGkgbmVsbGEgcmljZXJjYSBGQVEuIFF1ZXN0YSBvcHppb25lIG5vbiBoYSBlZmZldHRvIG5lbGxhIHBvc2l6aW9uZSBkZWxsYSBjb2xvbm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluaXNjZSBkb3ZlIHZlcnLDoCB2aXN1YWxpenphdG8gaWwgY29sbGVnYW1lbnRvIFwnSW5zZXJpc2NpIEZBUVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbml6aW9uZSBkZWwgY2FtcG8gdGVzdG8gbGliZXJvIGRlbGxlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdFbGltaW5hIHF1ZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWNhIHF1ZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FiaWxpdGEgcGnDuSBsaW5ndWUgbmVsIG1vZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0FiaWxpdGEgbWVjY2FuaXNtbyBkaSB2b3RvIG5lbCBtb2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0VzcGxvcmF0b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdDYW1wbzQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnQ2FtcG81JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBwbyBwZXIgbFwnYXBwcm92YXppb25lIGRpIGFydGljb2xpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ1N0b3JpY28gZGkgcXVlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNjZSBkb3ZlIGxhIHJpY2VyY2EgcmFwaWRhIGRvdnJlYmJlIGVzc2VyZSB2aXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ1JlZ2lzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uZSBkZWxsYSBsaW5ndWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnQ29sbGVnYSB1blwnYWx0cm8gb2dnZXR0byBhIHF1ZXN0byBvZ2dldHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdJIG51b3ZpIGFydGljb2xpIEZBUSByaWNoaWVkb25vIGFwcHJvdmF6aW9uZSBwcmltYSBkaSBlc3NlcmUgcHViYmxpY2F0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOdW1lcm8gZGkgZWxlbWVudGkgbW9zdHJhdGkgbmVpIG1vZGlmaWNhdGkgZGkgcmVjZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOdW1lcm8gZGkgZWxlbWVudGkgbW9zdHJhdGkgbmVpIGNyZWF0aSBkaSByZWNlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ051bWVybyBkaSBlbGVtZW50aSBtb3N0cmF0aSBuZWxsYSBmdW56aW9uYWxpdMOgIHByaW5jaXBhbGkgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnU3RhbXBhIHF1ZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnQ29kYSBwZXIgbFwnYXBwcm92YXppb25lIGRlZ2xpIGFydGljb2xpIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0NlcmNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnTW9zdHJhIGFydGljb2xvIEZBUSBjb24gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhIHBlcmNvcnNvIEZBUSBzw6wvbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdNb3N0cmEgZ2xpIGVsZW1lbnRpIGRlbGxlIHNvdHRvY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhIGkgcHJpbmNpcGFsaSAxMCBuZWxsZSBpbnRlcmZhY2NlIHNwZWNpZmljYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhIGxhIHZvdGF6aW9uZSBuZWxsZSBpbnRlcmZhY2NlIHNwZWNpZmljYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1NpbnRvbW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnU29sbyB0ZXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRvcmUgcGVyIGxlIEZBUSwgZXM6IEZBUSMsIEtCIywgTXlGQVEjLiBJbCB2YWxvcmUgcHJlZGVmaW5pdG8gw6ggRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ29ycG8gZGVsIHRpY2tldCBwZXIgbFwnYXBwcm92YXppb25lIGRlbGxcJ2FydGljb2xvIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ09nZ2V0dG8gZGVsIHRpY2tldCBwZXIgbFwnYXBwcm92YXppb25lIGRlbGxcJ2FydGljb2xvIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0VsZW1lbnRvIGRlbGxhIGJhcnJhIGRlZ2xpIHN0cnVtZW50aSBwZXIgdW5hIHNjb3JjaWF0b2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXN0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncHViYmxpY28gKHR1dHRpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVHjga7mlrDopo/ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfjgq3jg7zjg6/jg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfjgqvjg4bjgrTjg6rjga/lv4XpoIjpoIXnm67jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfmib/oqo0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIOOCq+ODhuOCtOODqueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnRkFRIOOCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ0ZBUSDjgqvjg4bjgrTjg6rjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn6Kaq44Kr44OG44K044OqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAn44Gy44Go44Gk5Lul5LiK44Gu5qip6ZmQ44Gu44Kw44Or44O844OX44KS6YG45oqe44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgafpoIXnm67jgavjgqLjgq/jgrvjgrnjgafjgY3jgovmi4XlvZPogIXjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ+S4gOimp+OBp+OCs+ODoeODs+ODiOOBqOOBl+OBpuihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC5LiA44Gk5Lul5LiK44GuRkFR6KiY5LqL44Gn5L2/55So44GV44KM44Gm44GE44KL44GL44CB44G+44Gf44Gv5LuW44Gu44Kr44OG44K044Oq44Gu6Kaq44Kr44OG44K044Oq44Gr44Gq44Gj44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv5Lul5LiL44Gu6KiY5LqL44Gn5L2/55So44GV44KM44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+S7peS4i+OBruOCq+ODhuOCtOODquOBruimquOCq+ODhuOCtOODquOBp+OBmeOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfjgZPjga7oqJjkuovjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVHkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICfjg6/jgqTjg6vjg4njgqvjg7zjg4njgYzliKnnlKjlj6/og73jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn6auY5qmf6IO95qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICfjgrXjg5bjgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFR6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn5a2Q44Kr44OG44K044Oq44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICflsaXmrbQ6ICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICflsaXmrbTlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+S9nOaIkOaXpeaZgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfjgrjjg6Pjg7zjg4rjg6vjga7mg4XloLHjgYzjgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIOiogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnRkFRIOiogOiqnuOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0ZBUSDoqIDoqp7jgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn5aSa6KiA6Kqe44Gn5L2c5qWt44KS44GX44Gf44GE5aC05ZCI44CB44GT44Gu6aCF55uu44KS6Kit5a6a44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ+iogOiqnuOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfoqIDoqp7jgpLov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn44GT44Gu6KiA6Kqe44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+OBk+OBruiogOiqnuOCkuWJiumZpOOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAguS4gOOBpOS7peS4iuOBrkZBUeOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+OBk+OBruiogOiqnuOBr+OAgeS7peS4i+OBrkZBUeOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+ioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfjg5rjg7zjgrjmr47jga7oqJjkuovmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnRkFR44OH44O844K/44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICc144Gk5pif44Gu44GG44GhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ+OCreODvOODr+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn5oqV56WoICjkvosuIDEw44Gr562J44GX44GEIOOBguOCi+OBhOOBryA2MOOCiOOCiuWkp+OBjeOBhCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn44Os44O844OIICjkvosuIDI1JeOBq+etieOBl+OBhCDjgYLjgovjgYTjga8gNzUl44KI44KK5aSn44GN44GEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ+aJv+iqjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDntYLmm7TmlrDogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYIgKOS7peWJjS/ku6XlvowpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUemgheebruS9nOaIkOaXpeaZgiAo5pyf6ZaT5oyH5a6aKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUemgheebruWkieabtOaXpeaZgiAo5Lul5YmNL+S7peW+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR6aCF55uu5aSJ5pu05pel5pmCICjmnJ/plpPmjIflrpopJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUeWFqOaWhyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUeaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ+ODl+ODreODleOCoeOCpOODq+mBuOaKnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAn5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICfmipXnpajjga7oqK3lrprjgYzjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICfnibnlrprjga7mipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAn5L6LLiAxMCDjgavnrYnjgZfjgYQg44GC44KL44GE44GvIDYwIOOCiOOCiuWkp+OBjeOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn44Os44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfjg6zjg7zjg4jjga7oqK3lrprjgYzjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ+eJueWumuOBruODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ+S+iy4gMjUl44Gr562J44GX44GEIOOBguOCi+OBhOOBryA3NSXku6XkuIonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdGQVHpoIXnm67lpInmm7TmmYLplpMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ+aKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfmipXnpajjga/jgYLjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ+aKleelqOOBr+OBguOCiuOBvuOBm+OCk+OAguOBk+OBruiomOS6i+OBq+acgOWIneOBruipleS+oeOCkuaKleelqOOBl+OBvuOBl+OCh+OBhuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5re75LuY44OV44Kh44Kk44Or44KS44OA44Km44Oz44Ot44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnKOS4gOmDqOOBrk9T44Gr44GK44GE44Gm44GvKeS4i+iomOOBruODquODs+OCr+OCkuOCquODvOODl+ODs+OBmeOCi+OBn+OCgeOBq+OCr+ODquODg+OCr+aZguOBq+OAgUN0cmwg44GC44KL44GE44GvIENtZCDjgb7jgZ/jga8gU2hpZnTjgq3jg7zjgpLmirzkuIvjgZnjgovlv4XopoHjgYzjgovloLTlkIjjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfjgZPjga5GQVHpoIXnm67jga/jgYrlvbnjgavjgZ/jgaHjgb7jgZfjgZ/jgYs/IOOAgEZBUeODh+ODvOOCv+ODvOODmeODvOOCueOBruaUueWWhOOBq+W9ueeri+OBpuOBvuOBmeOBruOBp+OAgeODrOODvOODhuOCo+ODs+OCsOOBq+WNlOWKm+OBj+OBoOOBleOBhOOAguOCiOOCjeOBl+OBj+OBiumhmOOBhOOBl+OBvuOBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ+OBguOBvuOCiuW9ueOBq+eri+OBn+OBquOBi+OBo+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfjgajjgabjgoLlvbnjgavnq4vjgaPjgZ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ+mgheebruOBruS4u+mhjOOBq0ZBUeOCv+OCpOODiOODq+OCkui/veWKoOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfoqJjkuovjgpLmjL/lhaXjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnRkFR5YWo5paH44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ+ODquODs+OCr+OCkuaMv+WFpeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn6KiY5LqL44Go44Oq44Oz44Kv44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdGQVHlhajmlofjgajjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgosnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfoqbLlvZPjgZnjgovoqJjkuovjga/jgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfjgZPjgaHjgonjga7mg4XloLHjgoLlvbnjgavjgZ/jgaTjgYvjgoLjgZfjgozjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ+S7tuWQjeOBqOacrOaWh+OBi+OCieacieWKueOBquaDheWgseOBr+imi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAn5Lu25ZCN44GL5pys5paH44KS6KiY5YWl44GX44Gm44CB5pyJ5Yq544Gq5oOF5aCx44Gu44Oq44K544OI44KS5Y+W5b6XJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGQVHlhajmlofmpJzntKLvvIjkvovvvJoiSm9obipuIuOAgSJXaWxsKiLvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfmipXnpajopo/liLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ+aKleelqOOBleOCjOOBpuOBhOOCi0ZBUeOBruOBvy4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ+ODrOODvOODiOimj+WItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfjg6zjg7zjg4jjgZXjgozjgabjgYTjgotGQVHjga7jgb8uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICfmmYLplpPliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ+S9nOaIkOOBleOCjOOBn0ZBUemgheebruOBruOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfmnJ/plpPlhoXjgavkvZzmiJDjgZXjgozjgZ9GQVHpoIXnm67jga7jgb8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnU2VhcmNoLVByb2ZpbGUt5qSc57Si44OX44Ot44OV44Kj44O844Or44CA44KS44OG44Oz44OX44Os44O844OI44Gr44GX44G+44GZ44GLPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyBGQVEg6aCF55uu44OK44Oz44OQ44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn6KiY5LqL44Gu44Kt44O844Ov44O844OJ5qSc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ+WFrOmWiyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnRkFR44Ko44Kv44K544OX44Ot44O844Op44O844Gr5oi744KLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfoqq3mm7jjgY0ocncp44Gu5qip6ZmQ44GM5b+F6KaB44Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICfjg6bjg7zjgrbjg7zjgYzjgIDoqq3jgoAv5pu444GPIOaoqemZkOOBruOBguOCi+OCq+ODhuOCtOODquODvOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICfjg4fjg5Xjgqnjg6vjg4joqIDoqp7jgYzkuI3mmI7jga7jgZ/jgoHjgIHmlrDjgZfjgYTjgqvjg4bjgrTjg6rjga7kvZzmiJDjgYzjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICfjgqvjg4bjgrTjg6pJROOBruWFpeWKm+OBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfjgIzlkI3liY3jgI3jga/lv4XpoIjpoIXnm67jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+OBmeOBp+OBq+WtmOWcqOOBl+OBpuOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+OBmeOBp+OBq+WtmOWcqOOBl+OBpuOBhOOBvuOBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJ+OCq+ODhuOCtOODqklEIOOBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICfjgqvjg4bjgrTjg6ogJXMg44Gu5YmK6Zmk44GM44Gn44GN44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ+OCq+ODhuOCtOODquOBjOabtOaWsOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn5paw44GX44GE44Kr44OG44K044Oq44GM6L+95Yqg44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkuWJiumZpCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICfjgqLjgqTjg4bjg6BJRCDjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICfjgYLjgarjgZ/jga/jgZPjga7jgqvjg4bjgrTjg6rjgbjjga7mqKnpmZDjgYzjgYLjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnRkFRIOiomOS6iyAlcyDjgpLliYrpmaTjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/vvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlc+OBruWApOOBjOS4jeato+OBp+OBmeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSXRlbUlEIOOBjOS4juOBiOOCieOCjOOBpuOBhOOBquOBhOOBn+OCgeOAgeWxpeattOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUSDjg5Ljgrnjg4jjg6rjg7wnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEg44K444Oj44O844OK44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICciJXMi44KS6Zay6Kan44GZ44KL44Gf44KB44Gu6Kit5a6a5YCk44GM44GC44KK44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ+iogOiqnklE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+OAjOWQjeWJjeOAjeOBr+W/hemgiOmgheebruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+OBk+OBruiogOiqnuOBr+ioreWumua4iOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfoqIDoqp4gJXMg44Gu5YmK6Zmk44GM44Gn44GN44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ+iogOiqnuOBjOabtOaWsOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn6KiA6Kqe44GM6L+95Yqg44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ+iogOiqnuOCkuWJiumZpCAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAn57WQ5p6cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn5pyA57WC5pu05paw5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyVzwqAg44GM5LiN6Laz44GX44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ0xhbmd1YWdlT2JqZWN0ICjoqIDoqp7jgqrjg5bjgrjjgqfjgq/jg4gp44GM6Kqt44G/6L6844KB44G+44Gb44KTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+e1kOaenOOBjOOBguOCiuOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFR44OK44Oz44OQ44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ+acgOe1guabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUemgheebruS9nOaIkOaXpeaZgiAo5Lul5YmNL+S7peW+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR6aCF55uu5L2c5oiQ5pel5pmCICjmnJ/plpPmjIflrpopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR6aCF55uu5aSJ5pu05pel5pmCICjku6XliY0v5Lul5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVHpoIXnm67lpInmm7Tml6XmmYIgKOacn+mWk+aMh+WumiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAn562J44GX44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ+i2hSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAn5Lul5LiKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ+acqua6gCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAn5Lul5LiLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ+ODleOCoeOCpOODq0lE44GM5b+F6KaB44Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ+ipleS+oeOCkuOBhOOBn+OBoOOBjeOBguOCiuOBjOOBqOOBhuOBlOOBluOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+OBguOBquOBn+OBr+OBmeOBp+OBq+ipleS+oea4iOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ+ipleS+oeOBjOmBuOaKnuOBleOCjOOBpuOBhOOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfoqZXkvqHjga7mqZ/og73jgpLmnInlirnjgavjgarjgaPjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn6KiY5LqL5Y2w5Yi3JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAn44GT44Gu5pyf6ZaT5YaF44Gr5L2c5oiQ44GV44KM44GfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ+OCouOCpOODhuODoElE44Gu5YWl5Yqb44GM5b+F6KaB44Gn44GZ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfmlrDnnYDoqJjkuosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ+acgOi/keabtOaWsOOBleOCjOOBn+iomOS6iyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfkuIrkvY0xMOS7tuOBruiomOS6iyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ+OCv+OCpOODl+OBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdSU1Pjg5XjgqHjgqTjg6vjgYzkvZzmiJDjgafjgY3jgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUeWFqOaWhyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIOmhp+WuouOBruOBvyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g6aGn5a6i44Gu44G/IChGQVHlhajmlocpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIOWFrOmWiyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIOWFrOmWiyAoRkFR5YWo5paHKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICfoqZXkvqHjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ+OBk+OBruiomOS6i+OBr+epuuOBp+OBmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA5b6M44Gr5L2c5oiQ44GV44KM44GfRkFR6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOW+jOOBq+abtOaWsOOBleOCjOOBn0ZBUemgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIEZBUemgheebric7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICfjgrPjg7Pjg4bjg7Pjg4Tjgr/jgqTjg5cnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ+WGhemDqOWQkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ+WklumDqOWQkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICflhazplosnOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfjga/jgYQnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAn44OV44Kj44Or44K/5a6a576p44CALeWumue+qeOBleOCjOOBn+aWh+Wtl+WIl++8iHN0cmluZ++8ieOBq+ODquODs+OCr+OCkui/veWKoOOBmeOCi2h0bWzjgqLjgqbjg4jjg5fjg4Pjg4gtICDjgqjjg6zjg6Hjg7Pjg4jjg7vjgqTjg6Hjg7zjgrjjga/jgIEy56iu6aGe44Gu44Kk44Oz44OX44OD44OI44GM5Y+v6IO944Gn44GZ44CCMeOBpOebruOAgeOCpOODoeODvOOCuOOBruWQjeWJjeOBp+OBmSAo5L6LLiBmYXEucG5nKeOAguOBk+OBruWgtOWQiOOAgU9UT0JP44Kk44Oh44O844K444O744OR44K544GM5L2/55So44GV44KM44G+44GZ44CCMuOBpOebruOAgeOCpOODoeODvOOCuOOBq+ODquODs+OCr+OCkuaMv+WFpeOBmeOCi+OBk+OBqOOBjOWPr+iDveaAp+OBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdGQVEg6KiY5LqL44KS6L+95Yqg44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn6KmV5L6h44Gu57WQ5p6c6KGo56S644KI44GG44Gu44Kr44Op44O877yI44K544K/44Kk44Or44K344O844OI77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdGQVHpoIXnm67jgYvjgonpm6LohLHjgZnjgovjgb7jgafjga7jgq3jg6Pjg4Pjgrfjg6XmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+OCq+ODhuOCtOODquODvOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn6aGn5a6i55SoRkFR44Gu6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICfpoaflrqLnlKhGQVHjga7oqbPntLDooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICfpoaflrqLnlKhGQVHjga7mpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ+mhp+WuoueUqEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfmipXnpajjga7ntZDmnpzjga7lsI/mlbDngrnku6XkuIvjga7moYHmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+aXouWumuOBruOCq+ODhuOCtOODqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn6KaP5a6a44Gu6KiA6Kqe77yI5Y2Y5LiA6KiA6Kqe44Oi44O844OJ44Gn6YGL55So5pmC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ+ODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBleOCjOOCi0ZBUemgheebruOCv+OCpOODiOODq+OBruODh+ODleOCqeODq+ODiOacgOWkp+WApCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdGQVHjgbjjga7lj5bjgorovrzjgb/jgpLooYzjgYbjg4HjgrHjg4Pjg4jjga7lhKrlhYjpoIbkvY3jga7ml6LlrprlgKQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+iomOS6i+OCqOODs+ODiOODquODvOaZguOBruimj+WumuOBruOCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44G444Gu5Y+W44KK6L6844G/44KS6KGM44GG44OB44Kx44OD44OI44Gu5YSq5YWI6aCG5L2N44Gu5pei5a6a5YCkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUemgheebruaJv+iqjeeUqOODh+ODleOCqeODq+ODiOODgeOCseODg+ODiOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i55So44OR44Op44Oh44O844K/44Gu44OH44OV44Kp44Or44OI5YCk44CC44OR44Op44Oh44O844K/77yIQWN0aW9uPVhYWFhYWO+8ieOBr+OAgeOCueOCr+ODquODl+ODiOOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn44Oq44Oz44Kv44Kq44OW44K444Kn44Kv44OI44Km44Kj44K444Kn44OD44OI77yITGlua09iamVjdCA6OiBWaWV3TW9kZSA9ICJjb21wbGV4Iu+8ieOBp+ioreWumuODnOOCv+ODs+OCkuS9v+eUqOOBp+OBjeOCi+OCouOCr+OCt+ODp+ODs+OCkuWumue+qeOBl+OBvuOBmeOAgiDjgZPjgozjgonjga7jgqLjgq/jgrfjg6fjg7Pjga/jgIHmrKHjga5KU+OBiuOCiOOBs0NTU+ODleOCoeOCpOODq+OCkueZu+mMsuOBl+OBpuOBhOOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgkNvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgUNvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz44CB5Y+K44GzQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0ZBUeOCv+OCpOODiOODq+OBjOiomOS6i+OBruS7tuWQjeOBq+mAo+e1kOOBmeOCi+OBi+OBqeOBhuOBi+OCkuWumue+qeOBl+OBvuOBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn57Ch5piT54mIRkFR44K444Oj44O844OK44Or6KGo56S655So44Oi44K444Ol44O844Or44Gu5qaC6KaB44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeS4gOimp+ihqOekuueUqOODouOCuOODpeODvOODq+OBruamguimgeOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPmm7/jgYjjgavliKnnlKjjgZnjgovlsZ7mgKfpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOmghiAvIERvd246IOaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBruihqOekuumghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTpoIYgLyBEb3duOiDmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gu6KGo56S66aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOmghiAvIERvd246IOaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnvvIhGQVHkuIDopqfvvInjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE6aCGIC8gRG93bjog5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTpoIYgLyBEb3duOiDmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTpoIYgLyBEb3duOiDmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdGQVEg5qSc57Si55S76Z2i44Gr6KGo56S644GV44KM44KLRkFRIOaknOe0ouWxnuaAp+OBruODh+ODleOCqeODq+ODiOWApOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdGQVHoqJjkuovjgYvjgonjg4HjgrHjg4Pjg4jjgbjjga7mjL/lhaXjgZXjgozjgovmg4XloLHjgpLlrprnvqnjgZnjgovjgILjgIxGQVHjgZnjgbnjgabjgI3jgavjga/jg4bjgq3jgrnjg4jjg7vmt7vku5jjg7vlj4rjgbPjgqTjg7Pjg6njgqTjg7Pjga7nlLvlg4/jgYzlkKvjgb7jgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAn44OA44OD44K344Ol44Oc44O844OJ44Gu44OQ44OD44Kv44Ko44Oz44OJ44OR44Op44Oh44O844K/44KS5a6a576p44CC44CMTGltaXQg44Oq44Of44OD44OI44CN44Gv5qiZ5rqW44Gn6KGo56S644GV44KM44KL44Ko44Oz44OI44Oq44O844KS5a6a576p44GX44G+44GZ44CC44CMR3JvdXAg44Kw44Or44O844OX44CN44Gv44OX44Op44Kw44Kk44Oz44G444Gu44Ki44Kv44K744K544KS5Yi26ZmQ44GX44G+44GZ44CCKOS+iy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDIp44CC44CMRGVmYXVsdOOAgOODh+ODleOCqeODq+ODiOOAjeOBr+ODl+ODqeOCsOOCpOODs+OBjOaomea6luOBp+acieWKueOBq+OBquOBo+OBpuOBhOOCi+OBi+OAgeODpuODvOOCtuODvOOBjOaJi+WLleOBp+acieWKueOBq+OBmeOCi+W/heimgeOBjOOBguOCi+OBi+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfmi4XlvZPogIXnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBp+OBruihqOekuumgheebruOBruioreWumuOAguOBk+OBruioreWumuOBq+OCiOOBo+OBpumgheebruOBruS4puOBs+mghuOCkuWItuW+oeOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0ZBUeODquODs+OCr+OBjOOBqeOBk+OBq+ihqOekuuOBleOCjOOCi+OBi+Wumue+qeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdGQVHjga7jg5Xjg6rjg7zjg4bjgq3jgrnjg4jjg5XjgqPjg7zjg6vjg4njga7lrprnvqnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GuIEZBUSDov73liqDnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GuIEZBUSDnt6jpm4bnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCuSDjga4gRkFRIOS4gOimp+eUu+mdouOBq+ihqOekuuOBmeOCiyDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg44GuIEZBUSDkuIDopqfnlLvpnaLjgavooajnpLrjgZnjgosg44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga4gRkFRIOWNsOWIt+eUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44Kk44K5IOOBriBGQVEg5Y2w5Yi355S76Z2i44Gr6KGo56S644GZ44KLIOODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCuSDjga4gRkFRIOWNsOWIt+eUu+mdouOBq+ihqOekuuOBmeOCiyDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga4gRkFRIOaknOe0oueUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCuSDjga4gRkFRIOaknOe0oueUu+mdouOBq+ihqOekuuOBmeOCiyDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44Kk44K5IOOBriBGQVEg5qSc57Si55S76Z2i44Gr6KGo56S644GZ44KLIOODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCs+ODs+ODkeOCr+ODiOOBqkZBUeamguimgeeUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVHjgrrjg7zjg6DnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR44K644O844Og55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVHjgrrjg7zjg6DnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn5aSa6KiA6Kqe44KS5pyJ5Yq544Gr44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ+ipleS+oeOBruapn+iDveOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ+S4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnIEZBUSDjgqjjg6rjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdGQVEg44Gu5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0ZBUSDjga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnRkFRIOabtOaWsOWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFR44K444Oj44O844OK44Or5LiA6KanKFMp44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFR5LiA6KanKFMp44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdGQVEg44Gu6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgavjgYrjgZHjgovjgIFGQVHmpJzntKLjga7jg5Djg4Pjgq/jgqjjg7Pjg4njg6vjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnRmllbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZpZWxkNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0ZBUeWFqOaWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVHjga7oqJjkuovjga7mib/oqo3jga7jgZ/jgoHjga7jgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OBruWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRkFR55Sx5p2l44Gu44OB44Kx44OD44OI44Gr5ZCr44G+44KM44KL5YaF6YOo6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRkFR55Sx5p2l44Gu44OB44Kx44OD44OI44Gr5ZCr44G+44KM44KL5YaF6YOo6aCF55uu44GZ44G544Gm44Gu5ZCN56ewJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn44Kv44Kk44OD44Kv5qSc57Si44GM6KGo56S644GV44KM44KL55S76Z2iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICfjgrjjg6Pjg7zjg4rjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+iogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ+iogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICfjgZPjga5GQVHoqJjkuovjgavku5bjgqrjg5bjgrjjgqfjgq/jg4jjgpLplqLpgKPku5jjgZHjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5Yip55So5Y+v6IO944Gq44K544OG44O844OI44K/44Kk44OX44Oq44K544OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUu+mdouOBp+WIqeeUqOWPr+iDveOBquOCueODhuODvOODiOOCv+OCpOODl+ODquOCueODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gn5Yip55So5Y+v6IO944Gq44K544OG44O844OI44K/44Kk44OX44Oq44K544OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOeUu+mdouOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44GuRkFR5LiA6Kan44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVHjgrjjg6Pjg7zjg4rjg6vjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmpJzntKLntZDmnpzjgajjgZfjgabmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafooajnpLrjgZXjgozjgotGQVHpoIXnm67jga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmpJzntKLntZDmnpzjgajjgZfjgabpoaflrqLnlLvpnaLjgafooajnpLrjgZXjgozjgotGQVHpoIXnm67jga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5qSc57Si57WQ5p6c44Go44GX44Gm5YWs6ZaL55S76Z2i44Gn6KGo56S644GV44KM44KLRkFR6aCF55uu44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIEV4cGxvcmVy44Gn6KGo56S644GV44KM44KL5Lu25ZCN44GuRkFR6KiY5LqL44Gu5pyA5aSn44K144Kk44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIEV4cGxvcmVyIOOBq+ihqOekuuOBleOCjOOCi+OAjEZBUemgheebruOBruS7tuWQjeOAjeOBruacgOWkp+WApOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEgRXhwbG9yZXIg44Gr6KGo56S644GV44KM44KL44CMRkFR6aCF55uu44Gu5Lu25ZCN44CN44Gu5pyA5aSn5YCk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSDmpJzntKLjgafooajnpLrjgZXjgozjgovku7blkI3jga5GQVHoqJjkuovjga7mnIDlpKfjgrXjgqTjgronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIOaknOe0oiDjgavooajnpLrjgZXjgozjgovjgIxGQVHpoIXnm67jga7ku7blkI3jgI3jga7mnIDlpKflgKTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSDmpJzntKIg44Gr6KGo56S644GV44KM44KL44CMRkFR6aCF55uu44Gu5Lu25ZCN44CN44Gu5pyA5aSn5YCk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEg44K444Oj44O844OK44Or44Gn6KGo56S644GV44KM44KL5Lu25ZCN44GuRkFR6KiY5LqL44Gu5pyA5aSn44K144Kk44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBq+OBiuOBhOOBpuOAgeOCt+ODp+ODvOODiOODu+ODgeOCseODg+ODiOaknOe0ouOBruOBn+OCgeOBrmh0bWwgT3BlblNlYXJjaOODl+ODreODleOCo+ODvOODq+OCkueUn+aIkOOBmeOCi+ODouOCuOODpeODvOODq+OBp+OBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ+aWsOimjyBGQVEg6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ+aWsOimjyBGQVEg6aCF55uu44KS5YWs6ZaL44GZ44KL44Gr44Gv5LqL5YmN44Gr5om/6KqN44GV44KM44KL44GT44Go44GM5b+F6KaB44Gn44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuoueUqOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ihqOekuuOBleOCjOOCiyBGQVEg6aCF55uu44Gu5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovnlKjjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafooajnpLrjgZXjgozjgosgRkFRIOmgheebruOBruaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlKjjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg5qSc57Si57WQ5p6c6KGo56S644Gu5ZCE55S76Z2i44Gn6KGo56S644GV44KM44KLIEZBUSDpoIXnm67jga7mlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCuSDjga7mpJzntKLntZDmnpzooajnpLrjga7lkITnlLvpnaLjgafooajnpLrjgZXjgozjgosgRkFRIOmgheebruOBruaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ+OAjOacgOi/keOBruWkieabtOOAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ+OAjOacgOaWsOOBruaWsOimj+S9nOaIkOOAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+OAjOODiOODg+ODlzEw6KiY5LqL44CN44Gr5L2V5Lu244G+44Gn6KGo56S644GZ44KL44GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+S4gOimp+OBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn57Ch5piT54mIRkFR5qaC6KaB44Gu44Oa44O844K45oyH5a6a55So44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn44GT44Gu6KiY5LqL44KS5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAn5YWs6ZaLRkFR44Gu6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICflhazplotGQVHjga7oqbPntLDjgpLooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAn5YWs6ZaLRkFR44Gu5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn5YWs6ZaLRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+iomOS6i+aJv+iqjeOCreODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+ipleS+oeeOh+OAguOCreODvOOBr+OAgeODkeODvOOCu+ODs+ODiOOBp+aMh+WumuOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnRkFR44KS5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnRkFR44Gu5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQWdlbnRGQVFab29t44Gn6KGo56S644GV44KM44KL44Kk44Oz44Op44Kk44OzSFRNTOOBruODh+ODleOCqeODq+ODiOmrmOOBlSjjg5Tjgq/jgrvjg6vooajoqJgp44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ3VzdG9tZXJGQVFab29tICjlj4rjgbMgUHVibGljRkFRWm9vbSnjgafooajnpLrjgZXjgozjgovjgqTjg7Pjg6njgqTjg7NIVE1M44Gu44OH44OV44Kp44Or44OI6auY44GVKOODlOOCr+OCu+ODq+ihqOiomCnjgpLoqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQWdlbnRGQVFab29t44Gn6KGo56S644GV44KM44KL44Kk44Oz44Op44Kk44OzSFRNTOOBruacgOWkp+OBrumrmOOBlSjjg5Tjgq/jgrvjg6vooajoqJgp44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ3VzdG9tZXJGQVFab29tICjlj4rjgbMgUHVibGljRkFRWm9vbSnjgafooajnpLrjgZXjgozjgovjgqTjg7Pjg6njgqTjg7NIVE1M44Gu5pyA5aSn44Gu6auY44GVKOODlOOCr+OCu+ODq+ihqOiomCnjgpLoqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdcJ0FnZW50RkFRWm9vbVNtYWxsXCfjga7oqK3lrprjgILlhazplovnlLvpnaLjgavjgYrjgYTjgabjgIzjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgI3jg5zjgr/jg7PjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ+WFrOmWi+OBleOCjOOBn0ZBUeiomOS6i+OBrkFnZW50RkFRWm9vbVNtYWxs44GrIkZBUeOBruODhuOCreOCueODiOOAgeOBiuOCiOOBs+ODquODs+OCr+OCkuaMv+WFpSIgLyAiRkFR44Gu44GZ44G544Gm44CB44GK44KI44Gz44Oq44Oz44Kv44KS5oy/5YWlIiDjg5zjgr/jg7PjgpLooajnpLrjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ0FnZW50RkFRWm9vbVNtYWxs44GrIkZBUeOBruODhuOCreOCueODiOOCkuaMv+WFpSIgLyAiRkFR44Gu44GZ44G544Gm44KS5oy/5YWlIuODnOOCv+ODs+OCkuihqOekuuOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfoqJjkuovjgadIVE1M44K/44Kw44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfoqJjkuovjga7jg5HjgrnjgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfjgrXjg5bjgqvjg4bjgrTjg6rjg7zjga7jg4jjg5Tjg4Pjgq/jgpLooajnpLrjgZnjgosv6KGo56S644GX44Gq44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+acgOaWsOOBruWkieabtOOCkuihqOekuuOBmeOCi+eUu+mdou+8iOaLheW9k+iAheeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfmnIDmlrDjga7mlrDopo/kvZzmiJDjgpLooajnpLrjgZnjgovnlLvpnaLvvIjmi4XlvZPogIXnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn44OI44OD44OXMTDjgpLooajnpLrjgZnjgovnlLvpnaLvvIjmi4XlvZPogIXnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn6KmV5L6h44KS6KGo56S644GZ44KL55S76Z2i77yI5ouF5b2T6ICF55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgarjganjga7jgrrjg7zjg6Djg7vjg5Pjg6Xjg7zjgafjgIFGQVHjgpLku5bjga7jgqrjg5bjgrjjgqfjgq/jg4jjgajjg6rjg7Pjgq/jgZXjgZvjgovjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Djg5Pjg6Xjg7zjgadGQVHliYrpmaTjga7jg6rjg7Pjgq/jgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Djg5Pjg6Xjg7zjgadGQVHjga7lsaXmrbTjga7jg6rjg7Pjgq/jgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp0ZBUee3qOmbhuOBruODquODs+OCr+OCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og44OT44Ol44O844Gn44CM5oi744KL44CN44Gu44Oq44Oz44Kv44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og44OT44Ol44O844GnRkFR44KS5Y2w5Yi344Oq44Oz44Kv44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn6Kej5rG6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICfnl4fnirYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAn44OG44Kt44K544OI44Gu44G/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdGQVHnlKjjga7orZjliKXlrZAg5L6LLiBGQVEjLCBLQiMsIE15RkFRIy4g44OH44OV44Kp44Or44OI44Gn44GvIEZBUSMg44Go44Gq44Gj44Gm44GE44G+44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmE5vcm1hbOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmFBhcmVudENoaWxk4oCZ44Oq44Oz44Kv44O744K/44Kk44OX44KS5L2/55So44GX44Gm44CB4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44GM5LuW44Gu4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44KM44KL44KI44GG44Gr44CB5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmE5vcm1hbOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmFRpY2tldOKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+KAmFBhcmVudENoaWxk4oCZ44Oq44Oz44Kv44O744K/44Kk44OX44KS5L2/55So44GX44Gm44CB4oCYRkFR4oCZ44Kq44OW44K444Kn44Kv44OI44GM5LuW44Gu4oCYVGlja2V04oCZ44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44KM44KL44KI44GG44Gr44CB5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVHmib/oqo3jg4HjgrHjg4Pjg4jnlKjjgIDjg4HjgrHjg4Pjg4jmnKzmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0ZBUeaJv+iqjeODgeOCseODg+ODiOeUqOOAgOODgeOCseODg+ODiOS7tuWQjSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ+OCt+ODp+ODvOODiOOCq+ODg+ODiOOBruOBn+OCgeOBruODhOODvOODq+ODkOODvOODu+OCouOCpOODhuODoOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn5aSW6YOoICjpoaflrqIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICflhoXpg6ggKOaLheW9k+iAhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn5YWs6ZaLICjlhajlk6EpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ+WFrOmWi+OAgCjjg5Hjg5bjg6rjg4Pjgq8pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdUYW1iYWggYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLYXRhIGt1bmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZW5nZXNhaGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnVGFtYmFoIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQXVkaXQgS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWIta2F0ZWdvcmkgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTaWxhIHBpbGloIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IHBlcm1pbnRhYW4ga3VtcHVsYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdLdW1wdWxhbiBlamVuIGJvbGVoIG1lbmdha3NlcyBhcnRpa2VsIGRhbGFtIGthdGVnb3JpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0FrYW4gZGlwYXBhcmthbiBzZWJhZ2FpIGtvbWVuIGRhbGFtIEV4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbSBrYXRlZ29yaSBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGthdGVnb3JpIGluaS4gSWEgZGlndW5ha2FuIGRhbGFtIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGF0aWtlbCBGQVEgZGFuL2F0YXUgYWRhbGFoIGlidWJhcGEga2VwYWRhIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGthdGVnb3JpIGxhaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnS2F0ZWdvcmkgaW5pIGRpZ3VuYWthbiBkYWxhbSBhdGlrZXQgRkFRIGJlcmlrdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnS2F0ZWdvcmkgaW5pIGFkYWxhaCBpYnViYXBhIGtlcGFkYSBzdWIta2F0ZWdvcmkgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW1hZGFtIGFydGlrZWwgRkFRIGluaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQ2FyaWFuIFBhbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmRzIGFkYWxhaCBkaWJlbmFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdDYXJpYW4gVGVycGVyaW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViLWthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlrZXQgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnVGlhZGEgc3ViLWthdGVnb3JpIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdTZWphcmFoIHVudHVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0thbmR1bmdhbiBzZWphcmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDaXB0YSBtYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ1RpYWRhIGRhdGEgSnVybmFsIEZBUSBkaXRlbXVpLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIEJhaGFzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdndW5ha2FuIGNpcmkgaW5pIGppa2EgYW5kYSBtYWh1IHVudHVrIGJla2VyamEgZGVuZ2FuIHBlbGJhZ2FpIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdUYW1iYWggYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ1RhbWJhaCBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0F1ZGl0IGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbWthbiBiYWhhc2EgaW5pPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdBbmRhIHRpZGFrIGJvbGVoIG1lbWFkYW0gYmFoYXNhIGluaS4gSWEgZGlndW5ha2FuIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGFydGlrZWwgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0JhaGFzYSBpbmkgZGlndW5ha2FuIGRhbGFtIEFydGlrZWwgRkFRIHlhbmcgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0F0dXJhbiBrb250ZWtzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlrZWwgRkFRIHBlciBtdWthIHN1cmF0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ1RpYWRhIGRhdGEgRkFRIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkYXJpcGFkYSA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ0thdGEga3VuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1VuZGkgKGNvbnRvaDogQmVyc2FtYWFuIDEwIGF0YXUgbGViaWggYmVzYXIgZGFyaXBhZGEgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0thZGFyIChjb250b2g6IEJlcnNhbWFhbiAyNSUgYXRhdSBsZWJpaCBiZXNhciBkYXJpcGFkYSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnRGlsdWx1c2thbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUZXJha2hpciBkaXViYWggb2xlaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1dha3R1IGNpcHRhIGFydGlrZWwgRkFRIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1dha3R1IGNpcHRhIGFydGlrZWwgRkFRIChkaSBhbnRhcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnV2FrdHUgcGVydWJhaGFuIGFydGlrZWwgRkFRIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1dha3R1IHBlcnViYWhhbiBhcnRpa2VsIEZBUSAoZGkgYW50YXJhKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFUZWtzUGVudWgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdDYXJpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUGlsaWhhbiBwcm9maWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1VuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1RpYWRhIHRldGFwYW4gdW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1VuZGkgc3Blc2lmaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnY29udG9oOiBTYW1hIGRlbmdhbiAxMCBhdGF1IExlYmloIGJlc2FyIGRhcmlwYWRhIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdLYWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnVGlhZGEgdGV0YXBhbiBrYWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnS2FkYXIgc3Blc2lmaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdjb250b2g6IFNhbWEgZGVuZ2FuIDI1JSBhdGF1IGxlYmloIGJlc2FyIGRhcmlwYWRhIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1dha3R1IGNpcHRhIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnV2FrdHUgcGVydWJhaGFuIGFydGlrZWwgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnTWVuaWxhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1VuZGlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdUaWFkYSB1bmRpYW4gZGl0ZW11aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ1RpYWRhIHVuZGlhbiBkaXRlbXVpISBKYWRpbGFoIG9yYW5nIHBlcnRhbWEgbWVuaWxhaSBhcml0bCBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTXVhdCB0dXJ1biBsYW1waXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1VudHVrIG1lbWJ1a2EgcGF1dGFuIGRhbGFtIGtldGVyYW5nYW4gYmxvayBiZXJpa3V0LCBhbmRhIG11bmdraW4gcGVybHUgbWVuZWthbiBrZWt1bmNpIEN0cmwgYXRhdSBDbWQgYXRhdSBTaGlmdCBzZW1hc2EgbWVuZWthbiBwYXV0YW4gKGJlcmdhbnR1bmcga2VwYWRhIHBlbGF5YXIgZGFuIHNpc3RlbSBvcGVyYXNpIGFuZGEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0JlcmFwYSBiYW55YWsgYXJpa2VsIGluaSBtZW1iYW50dT8gU2lsYSBiZXJpIGthbWkgcGVuaWxhaWFuIGFuZGEgZGFuIGJhbnR1IHVudHVrIG1lbmluZ2thdGthbiBwYW5na2FsYW4gZGF0YSBGQVEuIFRlcmltYSBLYXNpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdUaWRhayBtZW1iYW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdTYW5nYXQgbWVtYmFudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ1RhbWJhaCB0YWp1ayBGQVEgcGFkYSBzdWJqZWsgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdNYXN1ayBUZWtzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdNYXN1a2thbiBGQVEgcGVudWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnTWFzdWsgcGF1dGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTWFzdWsgVGVrcyBGQVEgJiBQYXV0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ01hc3Vra2FuIEZBUSBwZW51aCBkYW4gcGF1dGFuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnVGlhZGEgYXJ0aWtlbCBGQVEgZGlqdW1wYWkuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQ2FyaWFuIFRla3MgcGVudWggZGFsYW0gYXJ0aWtlbCBGQVEgKGNvbnRvaC4gIkpvaG4qbiIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTZWthdGFuIHVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIGJlcnNlcnRhIHVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdTZWthdGFuIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIGJlcnNlcnRhIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnS2VrYW5nYW4gbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnSGFueWEgYXJ0aWtlbCBGQVEgeWFuZyBkaWNpcHRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIHlhbmcgZGljaXB0YSBkaSBhbnRhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnQ2FyaWFuIGJlcnByb2ZpbCBzZWJhZ2FpIHRlbXBsYXQ/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTm9tYm9yIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdDYXJpYW4gdW50dWsgYXJ0aWtlbCBkZW5nYW4ga2VrdW5jaSBwZXJrYXRhYW4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnVW11bSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFsaWsga2VwYWRhIHBlbmVyb2thIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnQW5kYSBwZXJsdWthbiBrZWl6aW5hbiBydyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ1RpYWRhIGthdGVnb3JpIHlhbmcgZGlqdW1wYWkgZGltYW5hIHBlbmdndW5hIHBlcmx1IGFkYSBrZWl6aW5hbiBiYWNhL3R1bGlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdUaWFkYSBiYWhhc2EgbGF6aW0geWFuZyBkaWp1bXBhaSBkYW4gdGlkYWsgYm9sZWggbWVtYnVhdCB5YW5nIGJhcnUuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnUGVybHVrYW4gQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmkgcGVybHUgbWVtcHVueWFpIG5hbWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdrYXRlZ29yaSBpbmkgc3VkYWggd3VqdWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnS2F0ZWdvcmkgaW5pIHRlbGFoIHd1anVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJ1RpYWRhIENhdGVnb3J5SUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ1RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGthdGVnb3JpICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdLYXRlZ29yaSBGQVEgZGlrZW1hc2tpbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdrYXRlZ29yaSBGQVEgZGl0YW1iYWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1BhZGFtIGthdGVnb3JpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpYWRhIEl0ZW1JRCBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnQW5kYSB0aWRhayBtZW1wdW55YWkga2VpemluYW4gdW50dWsga2F0ZWdvcmkgaW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICd0aWRhayBtYW1wdSB1bnR1ayBtZW1idWFuZyBhcnRpa2VsIEZBUSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlcyBpdHUgdGlkYWsgc2FoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnU2VqYXJhaCBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdqdXJuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ1Blcmx1a2FuIHBpbGloYW4gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgY29uZmlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ3BpbGloYW4gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgY29uZmlnIG1lbWVybHVrYW4gdW50dWsgbWVuamFkaSBzdWF0dSBydWogSEFTSCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICdUaWFkYSBwaWxpaGFuIGNvbmZpZyBkaWp1bXBhaSB1bnR1ayBwYW5kYW5nYW4gIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgTGFuZ3VhZ2VJRCBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05hbWEgZGlwZXJsdWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdCYWhhc2EgaW5pIHN1ZGFoIHd1anVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdUaWRhayBtYW1wdSB1bnR1ayBtZW1idWFuZyBiYWhhc2EgJXMgaXR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpa2VtYXNraW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXRhbWJhaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnUGFkYW0gYmFoYXNhICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdLZXB1dHVzYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdLZW1hc2tpbmkga2FsaSB0ZXJha2hpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdNZWRhbiBEaW5hbWlrIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgJXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdUaWRhayBib2xlaCBtZW11YXRrYW4gT2JqZWtCYWhhc2EhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ05vbWJvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnUGVydHVrYXJhbiBBa2hpciBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEl0ZW0gQ2lwdGEgTWFzYSAoc2ViZWx1bS9zZWxlcGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgSXRlbSBDaXB0YSBNYXNhIChkaSBhbnRhcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEl0ZW0gVWJhaCBNYXNhIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBJdGVtIFViYWggTWFzYSAoZGkgYW50YXJhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdTYW1hIERlbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdsZWJpaCBCZXNhciBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnbGViaWggQmVzYXIgZGFyaXBhZGEgc2FtYSBkZW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTGViaWggS2VjaWwgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0xlYmloIEtlY2lsIGRhcmlwYWRhIHNhbWEgZGVuZ2FuICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdQZXJsdWthbiBGaWxlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1RlcmltYSBrYXNpaCB1bnR1ayB1bmRpYW4gYW5kYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdBbmQgc3VkYWggbWVuZ3VuZGkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnVGlhZGEga2FkYXIgZGlwaWxpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnTWVrYW5pc21hIG1lbmd1bmRpIHRpZGFrIGRpYm9sZWhrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnS2FkYXIgdW5kaWFuIHRpZGFrIGRpdGFrcmlma2FuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdBcnRpa2VsIEZBUSBkaWNldGFrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnRGljaXB0YSBkaSBhbnRhcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnUGVybHVrYW4gSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtlbCBGQVEgKGJhcnUgZGljaXB0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWwgRkFRIChiYXJ1IGRpdWJhaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbCBGQVEgKDEwIHRlcmJhaWspJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgSmVuaXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdKZW5pcyBtZXN0aSBhbnRhcmEgTGFzdENyZWF0ZSBhdGF1IExhc3RDaGFuZ2UgYXRhdSBUb3AxMCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdUaWRhayBib2xlaCBtZW5jaXB0YSBmYWlsIFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKFRla3NwZW51aEZBUSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIFBlbGFuZ2dhbiAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUGVsYW5nZ2FuIChUZWtzcGVudWhGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFVtdW0gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBVbXVtICh0ZWtzcGVudWhGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQXJ0aWtlbCBpbmkga29zb25nISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdNZW5jaXB0YSBhcml0a2VsIEZBUSB0ZXJiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0tlbWFza2luaSBBcnRpa2VsIEZBUSB0ZXJiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdBcml0a2VsIEZBUSAxMCB0ZXJiYWlrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnZGFsYW1hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2x1YXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICd1bXVtJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnQXNpbmdhbiB1bnR1ayBoYXNpbCBrZWx1YXJhbiB1bnR1ayBtZW5hbWJhaCBwYXV0YW4gZGliZWxha2FuZyBqYXJpbmdhbiBzdHJpbmcuIEVsZW1lbiBnYW1iYXIgZGliZW5hcmthbiBkdWEgaW5wdXQuIHBlcnRhbWEgbmFtYSBnYW1iYXIgdGVyc2VidXQgKGZhcS5wbmcpLiBEYWxhbSBrZXMgaW5pLCBqYWxhbiBnYW1iYXIgT1RPQk8gYWthbiBkaWd1bmFrYW4uIGtlZHVhbnlhIGtlbXVuZ2tpbmFuIGFkYWxhaCB1bnR1ayBtZW1hc3Vra2FuIHBhdXRhbiBwYWRhIGdhbWJhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAndGFtYmFoIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnV2FybmEgQ1NTIHVudHVrIGtlcHV0dXNhbiB1bmRpYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdXYWt0dSBjYWNoZSB1bnR1ayBtZW5pbmdnYWxrYW4gYmFnaSBpdGVtIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnUGVuZ3VydXNhbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnQ2V0YWthbiBGQVEgUGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdadW0gRkFRIFBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ2NhcmlhbiBGQVEgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdGQVEgUGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1RpdGlrIHBlcnB1bHVoYW4gZGFyaXBhZGEga2VwdXR1c2FuIHVuZGlhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0thdGVnb3JpIG5hbWEgc2VkaWEgYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnQmFoYXNhIHNlZGlhIGFkYSB1bnR1ayBhcnRpa2VsIEZBUSBwYWRhIHNhdHUgbW9kIGJhaGFzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0ZXRhcGFuIGF3YWwgZGFyaXBhZGEgdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0tldXRhbWFhbiBzZWRpYSBhZGEgdGlrZXQgdW50dWsgcGVuZ2VzYWhhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0tlYWRhYW4gc2VkaWEgYWRhIHVudHVrIGtlbWFzdWthbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLZWFkYWFuIHNlZGlhIGFkYSB0aWtldCB1bnR1ayBwZW5nZXNhaGFuIGRhcmlwYWRhIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdKZW5pcyB0ZXRhcGFuIGF3YWwgdGlrZXQgdW50dWsga2VsdWx1c2FuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnTmlsYWkgc2VkaWEgYWRhIHVudHVrIHRpbmRha2FuIHBhcmFtZXRlciBrZXBhZGEgZGVwYW5ha2hpciB1bXVtLiBUaW5kYWthbiBwYXJhbWV0ZXIgZGlndW5ha2FuIGRhbGFtIHNrcmlwIHNpc3RlbSB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBUaW5kYWthbiBkaW1hbmEgYnV0YW5nIHRldGFwYW4gaXR1IGFkYSBkYWxhbSB3aWRnZXQgb2JqZWsgYmVyc2FtYnVuZyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBTaWxhIHBhc3Rpa2FuIHlhbmcgVGluZGFrYW4gaW5pIHBlcmx1IGRpZGFmdGFya2FuIHlhbmcgYmVyaWt1dCBmYWlsLWZhaWwgSlMgZGFuIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdUZW50dWthbiBqaWthIHRhanVrIEZBUSBwZXJsdSBkaXJhbmdrYWlrYW4ga2VwYWRhIGFydGlrZWwgc3ViamVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBsaWhhdCBzZW11bGEgbW9kdWwgdW50dWsgcGFwYXIgcGFwYXJhbiBrZWNpbCBkYXJpIEp1cm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgbGloYXQgc2VtdWxhIG1vZHVsIHVudHVrIHBhcGFyIHBhcGFyYW4ga2VjaWwgZGFyaSBzZW5hcmFpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgc2lmYXQgc2VkaWEgYWRhIEZBUSBtZW55dXN1biBkYWxhbSBjYXJpYW4gRkFRIGRhcmlwYWRhIGludGVyZmFjZSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBzaWZhdCBzZWRpYSBhZGEgRkFRIG1lbnl1c3VuIGRhbGFtIGNhcmlhbiBGQVEgZGFyaXBhZGEgaW50ZXJmYWNlIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBpbnRlcmZhY2UgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBlamVuIGludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0ZXRhcGFuIGF3YWwgc2lmYXQgRkFRIHVudHVrIHN1c3VuYW4gRkFRIGRhbGFtIHBlbmVyb2thIEZBUSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHRldGFwYW4gYXdhbCBzaWZhdCBGQVEgdW50dWsgc3VzdW5hbiBGQVEgZGFsYW0gcGVuZXJva2EgRkFRIGFudGFyYSBtdWthIG9yYW5nIGF3YW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggRkFRIGxhbGFpIGRhbGFtIGhhc2lsIEZBUSBFeHBsb3JlciBiYWdpIGFudGFyYSBtdWthIGVqZW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVya2luaSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBGQVEgbGFsYWkgZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIGJhZ2kgYW50YXJhIG11a2EgcGVsYW5nZ2FuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gQmF3YWg6IHRlcmtpbmkgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIEZBUSBsYWxhaSBkYWxhbSBoYXNpbCBGQVEgRXhwbG9yZXIgYmFnaSBhbnRhcmEgbXVrYSBvcmFuZyBhd2FtLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gQmF3YWg6IHRlcmtpbmkgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIGxhbGFpIEZBUSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgZWplbi4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBsYWxhaSBGQVEgaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggbGFsYWkgRkFRIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gQmF3YWg6IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbGFsYWkgZGl0dW5qdWtrYW4gRkFRIGF0cmlidXQgY2FyaWFuIHVudHVrIHNrcmluIEZBUSBjYXJpYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBtYWtsdW1hdCB5YW5nIGFrYW4gZGltYXN1a2thbiBkYWxhbSB0aWtldCBiZXJkYXNhcmthbiBGQVEuICJGQVEgUGVudWgiIHRlcm1hc3VrIHRla3MsIGxhbXBpcmFuIGRhbiBpbWVqIHNlYmFyaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwYXJhbWV0ZXIgdW50dWsgYmFja2VuZCBwYXBhbiBwZW11a2EuICJIYWQiIG1lbnRha3JpZmthbiBiaWxhbmdhbiBwZW55ZXJ0YWFuIGRpcGFwYXJrYW4gc2VjYXJhIGxhbGFpLiAiS3VtcHVsYW4iIGRpZ3VuYWthbiB1bnR1ayBtZW55ZWthdCBha3NlcyBrZXBhZGEgcGx1Z2luIChjb250b2g6IEt1bXB1bGFuOiBhZG1pbjsgZ3JvdXAxIDsgZ3JvdXAyIDspLiAiRGVmYXVsdCIgbWVudW5qdWtrYW4gamlrYSBwbHVnaW4gaW5pIGRpYWt0aWZrYW4gc2VjYXJhIGxhbGFpIGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSB1bnR1ayBtZW1ib2xlaGthbiBzZWNhcmEgbWFudWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbGFqdXIgbWVudW5qdWtrYW4gZGkgRXhwbG9yZXIgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBqdXJuYWwgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiB5YW5nIGRpdHVuanVra2FuIGRhbGFtIGNhcmlhbiBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdNZW50YWtyaWZrYW4gZGkgbWFuYSBwYXV0YW4gXCdJbnNlcnQgRkFRXCcgYWthbiBkaXBhcGFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmlzaSBpdGVtIEZBUSBwZXJjdW1hIGJpZGFuZyB0ZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdQYWRhbSBGQVEgaW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnQXVkaXQgRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aWZrYW4gcGVsYmFnYWkgYmFoYXNhIHBhZGEgbW9kdWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpZmthbiB1bmRpYW4gbWVrYW5pc21hIHBhZGEgbW9kdWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ1BlbmVyb2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ1Blbmd1bGFzIEFKQVggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnUmljaHRleHQgdW50dWsgQUpBWCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdCYWhhZ2lhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnQmFoYWdpYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ0J1YW5nIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdTdW50aW5nIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0p1cm5hbCBGQVEgbGloYXQgc2VtdWxhICJLZWNpbCIgaGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGloYXQgc2VtdWxhIEZBUSBoYWQgImtlY2lsIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnQ2V0YWthbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdDYXJpYW4gU29hbGFuIExhemltIGJhY2tlbmQgcm91dGVyIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnTWVkYW40JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ01lZGFuNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0ZBUSBwZW51aCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLdW1wdWxhbiBiYWdpIGtlbHVsdXNhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ1NlamFyYWggRkFRIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnVGVybWFzdWsgYmlkYW5nIGRhbGFtYW4gVGlrZXQgYmVyYXNhc2thbiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnVGVybWFzdWsgbmFtYSBzZXRpYXAgYmlkYW5nIGRhbGFtIFRpa2V0IGJlcmFzYXNrYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0FudGFyYSBtdWthIGRpIG1hbmEgY2FyaWFuIGNlcGF0IGhlbmRha2xhaCBkaXR1bmp1a2thbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0p1cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnUGVuZ3VydXNhbiBCYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnRkFRIHBhdXRhbiBpbmkga2VwYWRhIG9iamVrIGxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VuYXJhaSBqZW5pcyBrZWFkYWFuIHlhbmcgYm9sZWggZGlndW5ha2FuIGRhbGFtIHJ1YW5nIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NlbmFyYWkgamVuaXMga2VhZGFhbiB5YW5nIGJvbGVoIGRpZ3VuYWthbiBkYWxhbSBydWFuZyBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZW5hcmFpIGplbmlzIGtlYWRhYW4geWFuZyBib2xlaCBkaWd1bmFrYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIG11a2EgZWplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBGQVEgRXhwbG9yZXIgYW50YXJhIG11a2EgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIEZBUSBhcnRpa2VsIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0ganVybmFsIEZBUSBkaSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkYWxhbSBGQVEgRXhwbG9yZXIgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRhbGFtIEZBUSBFeHBsb3JlciBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkYWxhbSBGQVEgRXhwbG9yZXIgZGFsYW0gYW50YXJhIG11a2EgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkaSBGQVEgQ2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGkgRkFRIENhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRpIEZBUSBDYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGFsYW0ganVybmFsIEZBUSBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW5qYW5hIHByb2ZpbCBIVE1MIE9wZW5TZWFyY2ggdW50dWsgY2FyaWFuIEZBUSBwZW5kZWsgZGFsYW0gYW50YXJhIG11a2EgYXdhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdBcnRpa2VsIGJhcnUgRkFRIHBlcmx1IGtlbHVsdXNhbiBzZWJlbHVtIG1lcmVrYSBtZW5kYXBhdCBkaXRlcmJpdGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBFeHBsb3JlciBGQVEgYW50YXJhIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIEV4cGxvcmVyIEZBUSBhbnRhcmEgbXVrYSBhd2FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gcGFkYSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSBha2FuIGRpcGFwYXJrYW4gcGFkYSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdCaWxhbmdhbiBpdGVtIHlhbmcgZGl0dW5qdWtrYW4gZGFsYW0gcGVydWJhaGFuIHRlcmFraGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0JpbGFuZ2FuIGl0ZW0geWFuZyBkaXR1bmp1a2thbiBkYWxhbSB0ZXJha2hpciBkaWNpcHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0JpbGFuZ2FuIGl0ZW0geWFuZyBkaXR1bmp1a2thbiBkYWxhbSAxMCB0ZXJhdGFzIGNpcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtdWthIHN1cmF0IChkaSBtYW5hIGl0ZW0gRkFRIGRpdHVuanVra2FuKSBnYW1iYXJhbiBrZWNpbCBqdXJuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBGQVEgZGl0dW5qdWtrYW4pIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIEZBUSBrZWNpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdDZXRhayBoYWxhbWFuIEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdjZXRha2FuIEZBUSB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICd6dW0gRkFRIHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnY2FyaWFuIEZBUSB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIFVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnQmVyYXR1ciB1bnR1ayBrZWx1bHVzYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnS2FkYXIgdW50dWsgbWVuZ3VuZGkuIEt1bmNpIG1lc3RpbGFoIGRhbGFtIHBlcmF0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdDYXJpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBrZXRpbmdnaWFuIGxhbGFpIChkYWxhbSBwaWtzZWwpIGJpZGFuZyBIVE1MIHNlYmFyaXMgZGFsYW0gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4ga2V0aW5nZ2lhbiBsYWxhaSAoZGFsYW0gcGlrc2VsKSBiaWRhbmcgSFRNTCBzZWJhcmlzIGRhbGFtIEN1c3RvbWVyRkFRWm9vbSAoZGFuIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdNZW5ldGFwa2FuIGtldGluZ2dpYW4gbWFrc2ltdW0gKGRhbGFtIHBpa3NlbCkgYmlkYW5nIEhUTUwgc2ViYXJpcyBkYWxhbSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBrZXRpbmdnaWFuIG1ha3NpbXVtIChkYWxhbSBwaWtzZWwpIGJpZGFuZyBIVE1MIHNlYmFyaXMgZGFsYW0gQ3VzdG9tZXJGQVFab29tIChkYW4gUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnVHVuanVra2FuICJTaXNpcGFuIEZBUSBMaW5rIiBCdXRhbmcgZGkgQWdlbnRGQVFab29tU21hbGwgdW50dWsgYXdhbSBGQVEgQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnVHVuanVra2FuIGJ1dGFuZyAiU2lzaXBhbiBGQVEgTGluayAmIFRla3MiLyAiU2lzaXBhbiBwZW51aCBGQVEiIGRpIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGF3YW0gRkFRIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdUdW5qdWtrYW4gYnV0YW5nICJTaXNpcGFuIFRla3MgRkFRIiAvICJTaXNpcGFuIFBlbnVoIEZBUSIgZGkgQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1BhcGFyIEZBUSBQZXJrYXJhIGRlbmdhbiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdQYXBhciBGQVEgamFsYW4geWEgLyB0aWRhay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWtrYW4gaXRlbS1pdGVtIHRpZGFrIHNhaGloIGRhbGFtIGtlcHV0dXNhbiBQZW5lcm9rYSBGQVEgYmFnaSBhbnRhcmFtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdQYXBhciBpdGVtIHN1YmthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNZW51bmp1a2thbiBpdGVtIHBlcnViYWhhbiB0ZXJha2hpciBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVHVuanVra2FuIGFraGlyIG1lbmNpcHRhIGl0ZW0gZGFsYW0gYW50YXJhIG11a2EgeWFuZyBkaXRha3JpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1BhcGFyIHRvcCAxMCBpdGVtIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdQYXBhciBtZW5ndW5kaSBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHlhbmcgbWVtYm9sZWhrYW4gbWVuZ2h1YnVuZ2thbiBGQVEgZGVuZ2FuIG9iamVrIGxhaW4gZGFsYW0gcGFuZGFuZ2FuIHpvb20gRkFRIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbiB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIG1lbWFkYW0gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBlamVuIHVudHVrIG1lbGloYXQgc2VqYXJhaCBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsgbWVuZ2VkaXQgYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbiB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIGtlbWJhbGkga2UgaGFsYW1hbiBzZWJlbHVtbnlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gYW50YXJhIG11a2EgZWplbiwgeWFuZyBtZW1ib2xlaGthbiB1bnR1ayBtZW5jZXRhayBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdQZW55ZWxlc2FpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1NpbXB0b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnaGFueWEgdGVrcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnUGVuZ2VjYW0gdW50dWsgaXRlbSBGQVEsIHNlcGVydGkgRkFRICMsICMgS0IsIE15RkFRICMuIE5pbGFpIGxhbGFpIGFkYWxhaCAjIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGV0YXBhbiBpbmkgbWVudGFrcmlma2FuIGJhaGF3YSBvYmplayBcJ0ZBUVwnIGJvbGVoIGRpcGF1dCBkZW5nYW4gb2JqZWsgXCdGQVFcJyBsYWluIG1lbmdndW5ha2FuIGplbmlzIHBhdXRhbiBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYWhhd2Egb2JqZWsgXCdGQVFcJyBib2xlaCBkaXBhdXQgZGVuZ2FuIG9iamVrIFwnRkFRXCcgbGFpbiBtZW5nZ3VuYWthbiBqZW5pcyBwYXV0YW4gXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFoYXdhIFwnIEZBUVwnIG9iamVrIGRlbmdhbiBqZW5pcyBwYXV0YW4gXCdiaWFzYVwnIGxhaW4gXCdUaWtldFwnIGJvbGVoIGRpa2FpdGthbiBkZW5nYW4gb2JqZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGV0YXBhbiBpbmkgbWVudGFrcmlma2FuIGJhaGF3YSBvYmplayBcJ0ZBUVwnIGJvbGVoIGRpcGF1dCBkZW5nYW4gXCdUaWtldFwnIGxhaW4gbWVuZ2d1bmFrYW4gamVuaXMgcGF1dGFuIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JhZGFuIHRpa2V0IHVudHVrIG1lbGVwYXNrYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdUZXJ0YWtsdWsga2VwYWRhIHRpa2V0IHVudHVrIG1lbGVwYXNrYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdJdGVtIFRvb2xiYXIgdW50dWsgamFsYW4gcGludGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnbHVhcmFuIChwZWxhbmdnYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdkYWxhbWFuIChlamVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdVbXVtIChTZW11YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnYXdhbSAoYXdhbSknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMZWdnIHRpbCBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdOw7hra2Vsb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZXIgb2JsaWdhdG9yaXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZGtqZW5uaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCBmb3IgT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VuZHJlIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnVW5kZXJrYXRlZ29yaSBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnU2Frc2JlaGFuZGxlcmdydXBwZXIgc29tIGhhciB0aWxnYW5nIHRpbCBhcnRpa2xlciBpIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCB2aXNlcyBzb20ga29tbWVudGFyIGkgdXRmb3Jza2VyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGVubmUga2F0ZWdvcmllbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbiwgZm9yZGkgZGVuIGVyIGJydWt0IGkgbWluc3QgZW4gT1NTLWFydGlra2VsIG9nL2VsbGVyIGZvcmVsZHJlIHRpbCBtaW5zdCBlbiBhbm5lbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgYnJ1a3QgaSBmw7hsZ2VuZGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgZm9yZWxkcmUgdGlsIGbDuGxnZW5kZSB1bmRlcmthdGVnb3JpZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBhcnRpa2tlbGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdPU1MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ1V0Zm9yc2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdIdXJ0aWdzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQXZhbnNlcnQgc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ09mdGUgU3RpbHRlIFNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdJbmdlbiB1bmRlcmthdGVnb3JpZXIgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3Jpa2sgZm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3Rvcmlrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnT3BwcmV0dGV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0IGZvciBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTGVnZyB0aWwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0xlZ2cgdGlsIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRW5kcmUgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgZmplcm5lIGRldHRlIHNwcsOla2V0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGV0dGUgc3Byw6VrZXQuIERldCBlciBicnVrdCBpIG1pbnN0IGVuIE9TUyBhcnRpa2tlbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdLb250ZWtzdHZhbGcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnT1NTIGFydGlrbGVyIHBlciBzaWRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0luZ2VuIGFydGlrbGVyIGZ1bm5ldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnYXYgNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdOw7hra2Vsb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnR29ka2plbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lzdCBlbmRyZXQgYXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdPcHByZXR0ZWxzZXN0aWRzcHVua3QgZm9yIE9TUyBhcnRpa2tlbGVuIChmw7hyL2V0dGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdPcHByZXR0ZWxzZXN0aWRzcHVua3QgZm9yIE9TUyBhcnRpa2tlbGVuIChtZWxsb20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdPU1Mtc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbHZhbGcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1N0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0luZ2VuIHN0ZW1tZWlubnN0aWxsaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdTcGVzaWZpa2sgbm90aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdSYW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ0luZ2VuIHJhbmdlcmluZ3Npbm5zdGlsbGluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mbyBvbSBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUmF0aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdJbmdlbiBzdGVtbWVyIGZ1bm5ldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0luZ2VuIHN0ZW1tZXIgYXZnaXR0ISBCbGkgZGVuIGbDuHJzdGUgdGlsIMOlIHN0ZW1tZSBww6UgZGVubmUgYXJ0aWtrZWxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0xhc3QgbmVkIHZlZGxlZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdWYXIgZGVubmUgYXJ0aWtrZWxlbiB0aWwgaGplbHA/IFbDpnIgc25pbGwgb2cgZ2kgb3NzIGRpbiBzdGVtbWUsIHNsaWsgYXQgdmkga2FuIGZvcmJlZHJlIGRhdGFiYXNlbi4gVHVzZW4gdGFrayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpa2tlIHRpbCBoamVscCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2ZWxkaWcgbnl0dGlnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnU2V0dCBpbm4gT1NTLXRla3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdTZXR0IGlubiBPU1MtbGVua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1NldHQgaW5uIE9TUy10ZWtzdCBvZyAtbGVua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0luZ2VuIE9TUy1hcnRpa2xlciBibGUgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnRnVsbHRla3N0c8O4ayBpIE9TUy1hcnRpa2xlciAoZi5la3MuICJPbCoiIGVsbGVyICJBbmRyZWFzKm4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdCYXJlIE9TUyBhcnRpa2xlciBtZWQgc3RlbW1lci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdCYXJlIE9TUyBhcnRpa2xlciBtZWQgcmFuZ2VyaW5nZXIuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdUaWRzYmVncmVuc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQXJ0aWtrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7hrIGV0dGVyIGFydGlrbGVyIG1lZCBuw7hra2Vsb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ09mZmVudGxpZyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGlsYmFrZSB0aWwgT1NTIHV0Zm9yc2tlcmVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRW4ga2F0ZWdvcmkgbcOlIGhhIGV0IG5hdm4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVrc2lzdGVyZXIgYWxsZXJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ09TUy1rYXRlZ29yaSBvcHBkYXRlcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdPU1Mta2F0ZWdvcmkgbGFndCB0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnU2xldHQga2F0ZWdvcmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ09TUy1oaXN0b3Jpa2snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdPU1Mtam91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYXZuIGVyIHDDpWtyZXZkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RldHRlIHNwcsOla2V0IGZpbm5lcyBhbGxlcmVkZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ09TUy1zcHLDpWsgb3BwZGF0ZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnT1NTLXNwcsOlayBsYWd0IHRpbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnU2xldHQgc3Byw6VrICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1Npc3Qgb3BwZGF0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdPU1MtbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1Npc3QgZW5kcmV0IGF2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUYWtrIGZvciBkaW4gc3RlbW1lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0R1IGhhciBhbGxlcmVkZSBzdGVtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0luZ2VuIHJhdGluZyB2YWxndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnVXRza3JpZnQgYXYgT1NTLWFydGlra2VsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnT1NTLWFydGlrbGVyIChueWxpZyBvcHByZXR0ZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdPU1MtYXJ0aWtsZXIgKG55bGlnIGVuZHJldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnT1NTLWFydGlrbGVyIChUb3BwIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEZW5uZSBhcnRpa2tlbGVuIGVyIHRvbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lzdCBvcHByZXR0ZWRlIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTaXN0IG9wcGRhdGVydGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3BwIDEwIE9TUyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnb2ZmZW50bGlnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUy1mYXJnZSBmb3IgYXZzdGVtbmluZ3NyZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaW9wcHNldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQW50YWxsIGRlc2ltYWxlciBmb3IgYXZzdGVtbmluZ3NyZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnRm9ydmFsZ3Qga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnU3RhbmRhcmQgcHJpb3JpdGV0IGZvciBzYWtlciBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnU3RhbmRhcmQgc3RhdHVzIGZvciBldCBPU1Mtb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQgc3RhdHVzIGZvciBzYWtlciBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXNqb24gYXYgZnJpdGVrc3RmZWx0IGZvciBPU1MtYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnU2xldHQgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRW5kcmUgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ1V0Zm9yc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZlbHQgNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGZWx0IDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cHBlIHNvbSBza2FsIGdvZGtqZW5uZSBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3Jpa2sgb3ZlciBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1NwcsOla29wcHNldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGVuayBvcHAgZXQgYW5uZXQgb2JqZWt0IHRpbCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ055ZSBhcnRpa2xlciB0cmVuZ2VyIGdvZGtqZW5uaW5nIGbDuHIgZGUga2FuIHB1Ymxpc2VyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQW50YWxsIG9iamVrdGVyIHZpc3QgaSBzaXN0ZSBlbmRyaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQW50YWxsIHZpc3RlIG9iamVrdGVyIHVuZGVyIHNpc3Qgb3BwcmV0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0FudGFsbCB2aXN0ZSBhcnRpa2xlciBpICJUb3BwIDEwIi1mdW5rc2pvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnU2tyaXYgdXQgZGVubmUgYXJ0aWtrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLw7ggZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdSYXRlciBmb3IgYXZzdGVtbWluZy4gTsO4a2tlbCBtw6UgdsOmcmUgaSBwcm9zZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTw7hrIGkgT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdWaXMgSFRNTCBpIE9TUy1hcnRpa2tlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnVmlzIE9TUy1zdGkgKGphL25laSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1ZpcyBpbm5ob2xkIGkgdW5kZXJrYXRlZ29yaWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgc2lzdCBlbmRyZWRlIGFydGlrbGVyIGkgZGVmaW5lcnRlIGdyZW5zZXNuaXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzIHNpc3Qgb3BwcmV0dGVkZSBhcnRpa2xlciBpIGRlZmluZXJ0ZSBncmVuc2Vzbml0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzICJUb3BwIDEwIiBpIGRlZmluZXJ0ZSBncmVuc2Vzbml0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBhdnN0ZW1taW5nIGkgZGVmaW5lcnRlIGdyZW5zZW5zbml0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdMw7hzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU3ltcHRvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgZm9yIGVuIE9TUy1hcnRpa2tlbCwgZi5la3MuIEZBUSMsIEtCIywgT1NTIywgTWluT1NTIy4gU3RhbmRhcmQgZXIgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIE9TUy1hcnRpa2xlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBPU1MtYXJ0aWtsZXIgbWVkICJGb3JlbGRyZS9CYXJuIi1sZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIk5vcm1hbCIgbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Rlbm5lIGlubnN0aWxsaW5nZW4gZGVmaW5lcmVyIGF0IGVuIE9TUy1hcnRpa2tlbCBrYW4gbGVua2VzIHRpbCBhbmRyZSBzYWtlciBtZWQgIkZvcmVsZHJlL0Jhcm4iLWxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1Nha3Npbm5ob2xkIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTYWtzZW1uZSBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdrdW4gdGlsIGt1bmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAna3VuIGludGVybnQgKGFnZW50ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ29mZmVudGxpZyAoYWxsZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBcnRpa2VsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1RyZWZ3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2llcyBlZW4gY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZWRrZXVyaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUSBjYXRlZ29yaWViZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3JpZSB2YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTZWxlY3RlZXIgdGVubWluc3RlIMOpw6luIHBlcm1pc3NpZWdyb2VwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR2VicnVpa2VycyBtZXQgcmVjaHRlbiBvcCBhcnRpa2VsZW4gaW4gZGV6ZSBjYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdXb3JkdCBpbiB3ZWJpbnRlcmZhY2UgZ2V0b29uZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1dpbHQgdSBkZXplIGNhdGVnb3JpZSB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdVIGt1bnQgZGV6ZSBjYXRlZ29yaWUgbmlldCB2ZXJ3aWpkZXJlbi4gSGlqIHdvcmR0IGdlYnJ1aWt0IGluIGVlbiBvZiBtZWVyIGFydGlrZWxlbiBlbi9vZiBoZWVmdCBvbmRlcmxpZ2dlbmRlIGNhdGVnb3Jpw6tuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0RlemUgY2F0ZWdvcmllIHdvcmR0IGdlYnJ1aWt0IGRvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0RlemUgY2F0ZWdvcmllIGhlZWZ0IGRlIHZvbGdlbmRlIHN1YmNhdGVnb3Jpw6tuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1dpbHQgdSBkaXQgYXJ0aWtlbCB2ZXJ3aWpkZXJlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgdmVya2VubmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1pvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmRzIHppam4gdG9lZ2VzdGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnVWl0Z2VicmVpZCB6b2VrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0dlZW4gc3ViY2F0ZWdvcmnDq24gZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdHZXNjaGllZGVuaXMgdmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0luaG91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQWFuZ2VtYWFrdCBvcCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnVGFhbCBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV2lsdCB1IGRlemUgdGFhbCB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVSBrdW50IGRlemUgdGFhbCBuaWV0IHZlcndpamRlcmVuLCBoaWogd29yZHQgZ2VicnVpa3QgZG9vciBlZW4gb2YgbWVlciBhcnRpa2VsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV6ZSB0YWFsIGlzIGdlYnJ1aWt0IHZvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29udGV4dCBJbnN0ZWxsaW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQWFudGFsIGFydGlrZWxlbiBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0dlZW4gRkFRIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICd2YW4gNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdUcmVmd29vcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnU3RlbSAoYmlqdi4gZ2VsaWprIGFhbiAxMCBvZiBncm90ZXIgZGFuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdWZXJob3VkaW5nICh2YjogR2VsaWprIGFhbiAyNSUgb2YgR3JvdGVyIGRhbiA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQWFuZ2Vub21lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYWF0c3QgZ2V3aWp6aWdkIGRvb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAodm9vci9uYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKHR1c3NlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAodm9vci9uYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKHR1c3NlbiknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnWm9la2VuIGluIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSB6b2VrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWVsIHNlbGVjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdTdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdHZWVuIGluc3RlbGxpbmdlbiBvbSB0ZSBzdGVtbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnU3BlY2lmaWVrZSBzdGVtbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ3ZiOiBHZWxpamsgYWFuIDEwIG9mIEdyb3RlciBEYW4gNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0Jlb29yZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdHZWVuIGJlb29yZGVsaW5nIGluc3RlbGxpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnU3BlY2lmaWVrZSBiZW9vcmRlbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2JpanYuIGdlbGlqayAyNSUgb2YgZ3JvdGVyIGRhbiA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnQmVvb3JkZWxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTdGVtbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0dlZW4gc3RlbW1lbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnR2VlbiBzdGVtbWVuIGdldm9uZGVuLiBXZWVzIGRlIGVlcnN0ZSBvbSBkaXQgYXJ0aWtlbCB0ZSBiZW9vcmRlbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnU2xhIGJpamxhZ2Ugb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdPbSBkZSBsaW5rcyBpbiBkZSBvbXNjaHJpanZpbmdlbiB0ZSBvcGVuZW4gaXMgaGV0IG1vZ2VsaWprIGRhdCB1IEN0cmwgb2YgQ21kIG9mIFNoaWZ0IG1vZXQgaW5kcnVra2VuIHRlcndpamwgdSBvcCBkZSBsaW5rIGtsaWt0IChhZmhhbmtlbGlqayB2YW4gdXcgYnJvd3NlciBlbiBiZXN0dXJpbmdzc3lzdGVlbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnSGllbHAgZGl0IGFydGlrZWwgYmlqIGhldCBiZWFudHdvb3JkZW4gdmFuIHV3IHZyYWFnPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ2hlbGVtYWFsIG5pZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnaGVlbCBlcmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0ZBUSB0aXRlbCB0b2V2b2VnZW4gYWFuIG9uZGVyd2VycCB2YW4gaGV0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnVm9lZyBGQVEgdGVrc3QgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnVm9sbGVkaWdlIEZBUSBpbnZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdWb2VnIGxpbmsgbmFhciBGQVEgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1ZvZWcgRkFRIHRla3N0IGVuIGxpbmsgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1ZvbGxlZGlnZSBGQVEgJiBMaW5rIGludm9lZ2VuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnR2VlbiBhcnRpa2VsZW4gZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnWm9la2VuIGluIHRla3N0IHZhbiBhcnRpa2VsZW4gKGJpanYuICJKYW5zKmVuIiBvZiAiUHJpbnQqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTdGVtbWluZ3NiZXBlcmtpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VsZW4gd2Fhcm9wIGdlc3RlbWQgd2VyZC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JlcGVya2luZ2VuIHZhbiBiZW9vcmRlbGluZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0FsbGVlbiBGQVEgYXJ0aWtlbGVuIG1ldCBlZW4gYmVvb3JkZWxpbmcgLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnVGlqZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VscyBkaWUgYWFuZ2VtYWFrdCB3ZXJkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VsIGRpZSBhYW5nZW1hYWt0IHdlcmRlbiB0dXNzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnWm9lay1Qcm9maWVsIGFscyB0ZW1wbGF0ZT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdBcnRpa2VsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnWm9layBvcCBhcnRpa2VsZW4gbWV0IHRyZWZ3b29yZCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdPcGVuYmFhcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGVydWcgbmFhciBkZSBGQVEgVmVya2VubmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnR2VlZiBlZW4gbmFhbSBvcCB2b29yIGRlIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0RlemUgY2F0ZWdvcmllIGJlc3RhYXQgYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSBjYXRlZ29yaWUgYmlqZ2V3ZXJrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBjYXRlZ29yaWUgdG9lZ2V2b2VnZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHZlcndpamRlcmVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgam91cm5hYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRGUgbmFhbSBpcyB2ZXJwbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGV6ZSB0YWFsIGJlc3RhYXQgYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdUYWFsIGJpamdld2Vya3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ1RhYWwgdG9lZ2V2b2VnZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnVGFhbCB2ZXJ3aWpkZXJlbiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0YWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGFhdHN0ZSB1cGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnRkFRIER5bmFtaXNjaGUgdmVsZGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0dlZW4gcmVzdWx0YWF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRIG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0JlZGFua3Qgdm9vciB1dyBzdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1UgaGVlZnQgYWwgZ2VzdGVtZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdHZWVuIHdhYXJkZXJpbmcgZ2VzZWxlY3RlZXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnQXJ0aWtlbCBhZmRydWtrZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpa2VsZW4gKG5pZXV3IGFhbmdlbWFha3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpa2VsZW4gKGxhYXRzdCBnZXdpanppZ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlrZWxlbiAodG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEaXQgaXRlbSBoZWVmdCBnZWVuIHdhYXJkZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGFhdHN0IGFhbmdlbWFha3RlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYWF0c3QgZ2V3aWp6aWdkZSBhcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1BvcHVsYWlyc3RlIGFydGlrZWxlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWVrJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBrbGV1ciB2b29yIGRlIHN0ZW1taW5nc3VpdHNsYWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciBjYXRlZ29yacOrbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ1N0YW5kYWFyZCBjYXRlZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnU3RhbmRhYXJkIHByaW9yaXRlaXQgdmFuIHRpY2tldHMgdm9vciBnb2Vka2V1cmluZyB2YW4gRkFRIGFydGlrZWxzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnU3RhbmRhYXJkIHN0YXR1cyB2b29yIEZBUSBhcnRpa2Vscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhYXJkIHN0YXR1cyB2YW4gaGV0IHRpY2tldCB2b29yIGhldCBnb2Vka2V1cmVuIHZhbiBGQVEgYXJ0aWtlbHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1ZlcndpamRlciBkaXQgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnQmV3ZXJrIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnT3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdWZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdWZWxkNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcm9lcCB2b29yIGRlIGdvZWRrZXVyaW5nIHZhbiBGQVEgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0dlc2NoaWVkZW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdMb2dib2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdCZWhlZXIgdGFsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnS29wcGVsIGVlbiBhbmRlciBvYmplY3QgYWFuIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0FydGlrZWwgYWZkcnVra2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdab2VrZW4gaW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdUb29uIEZBUSBpdGVtIG1ldCBIVE1MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ1Rvb24gRkFRIHBhZCBqYS9uZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1Rvb24gaXRlbXMgdmFuIHN1YmNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1Rvb24gc3RlbS1mZWF0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ09wbG9zc2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU3ltcHRvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJuIChrbGFudGVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChnZWJydWlrZXJzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdwdWJsaWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdEb2RhaiBhcnR5a3XFgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdzxYJvd2Ega2x1Y3pvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgamVzdCB3eW1hZ2FuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdaYXR3aWVyZHplbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1phcnrEhWR6YW5pZSBrYXRlZ29yaWFtaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0RvZGFqIGthdGVnb3JpxJnCoEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ0VkeXR1aiBrYXRlZ29yacSZIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0RvZGFqIGthdGVnb3JpxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkeXR1aiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnUG9ka2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnWmF6bmFjeiBwcnp5bmFqbW5pZWogamVkbsSFIGdydXDEmSB1cHJhd25pZcWELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cHkgYWduZXTDs3csIGt0w7NyZSBtYWrEhSBkb3N0xJlwIGRvIHRlaiBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdab3N0YW5pZSBwb2themFueSBqYWtvIGtvbWVudGFyeiB3IGVrc3Bsb3JlcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0xJkga2F0ZWdvcmnEmT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOaWUgbW/FvGVzeiB1c3VuxIXEhyB0ZWoga2F0ZWdvcmlpLiBKZXN0IG9uYSB1xbx5d2FuYSBwcnpleiBwcnp5bmFqbW5pZWogamVkZW4gYXJ0eWt1xYIgRkFRIGx1Yi9pIGplc3Qgcm9kemljZW0gcHJ6bmFqbW5pZWogamVkbmVqIGlubmVqIGthdGVnb3JpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ1RhIGthdGVnb3JpYSBqZXN0IHXFvHl3YW5hIHcgbmFzdMSZcHVqxIVjeWNoIGFydHlrdcWCYWNoIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdUYSBrYXRlZ29yaWEgamVzdCByb2R6aWNlbSBuYXN0xJlwdWrEhWN5Y2ggcG9ka2F0ZWdvcmlpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdGVuIGFydHlrdcWCIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFa3NwbG9yZXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1N6eWJraWUgd3lzenVraXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdabmFraSB3aWVsb3puYWN6bmUgc8SFIGRvendvbG9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnV3lzenVraXdhbmllIHphYXdhbnNvd2FuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnUG9ka2F0ZWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydHlrdcWCeSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdCcmFrIHBvZGthdGVnb3JpaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1phd2FydG/Fm8SHIGhpc3RvcmlpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdVdHdvcnpvbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggdyBkemllbm5pa3UgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnRG9kYWogasSZenlrIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkeXR1aiBqxJl6eWsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1XFvHlqIHRlaiBmdW5rY2ppIGplxZtsaSBjaGNlc3ogcHJhY293YcSHIHogd2llbG9tYSBqxJl6eWthbWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0RvZGFqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdEb2RhaiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkeXR1aiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdGVuIGrEmXp5az8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTmllIG1vxbxlc3ogdXN1bsSFxIcgdGVnbyBqxJl6eWthLiBKZXN0IG9uIHXFvHl3YW55IHcgcHJ6eW5ham1uaWVqIGplZG55bSBhcnR5a3VsZSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnVGVuIGrEmXp5ayBqZXN0IHXFvHl3YW55IHcgbmFzdMSZcHVqxIVjeWNoIGFydHVrdcWCYWNoIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEga29udGVrc3Rvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnTGljemJhIGFydHlrdcWCw7N3IEZBUSBuYSBzdHJvbsSZJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0JyYWsgZGFueWNoIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ogNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdTxYJvd28ga2x1Y3pvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ0fFgm9zdWogKG5wLjogcsOzd25lIDEwIGx1YiB3acSZY2VqIG5pxbwgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ09jZcWEIChucC46IHLDs3duZSAyNSUgbHViIHdpxJljZWogbmnFvCA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnWmF0d2llcmR6b25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSBwcnpleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBDemFzIHR3b3J6ZW5pYSB6Z8WCb3N6ZW5pYSAocHJ6ZWQvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBDemFzIHR3b3J6ZW5pYSB6Z8WCb3N6ZW5pYSAocG9tacSZZHp5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBDemFzIHptaWFueSB6Z8WCb3N6ZW5pYSAocHJ6ZWQvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBDemFzIHptaWFueSB6Z8WCb3N6ZW5pYSAocG9tacSZZHp5KSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEgcGXFgm5vdGVrc3Rvd28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnV3liw7NyIHByb2ZpbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ0fFgm9zdWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0JyYWsgdXN0YXdpZcWEIGfFgm9zb3dhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnS29ua3JldG5lIGfFgm9zeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICducC46IHLDs3duZSAxMCBsdWIgd2nEmWNlaiBuacW8IDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdPY2XFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnQnJhayB1c3Rhd2llxYQgb2Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnS29ua3JldG5hIG9jZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnbnAuOiByw7N3bmUgMjUlIGx1YiB3acSZY2VqIG5pxbwgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnQ3phcyB1dHdvcnplbmlhIGFydHlrdcWCdSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdGQVEgQ3phcyB6bWlhbnkgemfFgm9zemVuaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnT2NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdHxYJvc3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQnJhayBnxYJvc8OzdyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0JyYWsgZ8WCb3PDs3chIELEhWTFuiBwaWVyd3N6eSBpIG9jZcWEIHRlbiBhcnR5a3XFgiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdQb2JpZXJ6IHphxYLEhWN6bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnQWJ5IG90d29yennEhyDFgsSFY3phLCB3IHBvbmnFvHN6eWNoIGJsb2thY2ggb3Bpc3UsIG5hbGXFvHkgcHJ6eWNpc27EhcSHIGtsYXdpc3ogQ3RybCwgQ21kIGx1YiBTaGlmdCBwb2RjemFzIGtsaWtuacSZY2lhICh3IHphbGXFvG5vxZtjaSBvZCBwcnplZ2zEhWRhcmtpIGkgc3lzdGVtdSBvcGVyYWN5am5lZ28pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0phayBwb21vY255IGJ5xYIgdGVuIGFydHlrdcWCPyBQcm9zaW15IG8gdHdvasSFIG9jZW7EmSBpIHBvbW9jIHByenkgdWRvc2tvbmFsYW5pdSBiYXp5IEZBUS4gRHppxJlrdWplbXkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmllcHJ6eWRhdG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3BvbW9jbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0RvZGFqIHR5dHXFgsKgRkFRIGpha28gdGVtYXQgd2lhZG9tb8WbY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnV3N0YXcgdGVrc3QgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1dzdGF3IGNhxYJ5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdXc3RhdyBvZG5vxZtuaWsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdXc3RhdyB0ZWtzdCBpIG9kbm/Fm25payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1dzdGF3IGNhxYJ5IEZBUSBpIG9kbm/Fm25payc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05pZSB6bmFsZXppb25vIGFydHlrdcWCw7N3IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdUbyBtb8W8ZSBiecSHIHByenlkYXRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTmllIHpuYWxlemlvbm8gemFzb2LDs3cgcG9tb2N5IGRsYSBwb2RhbmVnbyB0ZW1hdHUgaSB0cmXFm2NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdXcGlzeiBvYm9rIHRlbWF0IGx1YiB0cmXFm8SHIHpnxYJvc3plbmlhIGFieSBwcnplc3p1a2HEhyB6YXNvYnkgcG9tb2N5Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnV3lzenVraXdhbmllIHBlxYJub3Rla3N0b3dlIHcgYXJ0eWt1xYJhY2ggRkFRIChucC4gIk5haipwc3p5IiBsdWIgIktvd2Fsc2sqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdPZ3JhbmljemVuaWEgZ8WCb3Nvd2FuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1R5bGtvIGFydHlrdcWCeSBGQVEgeiBnxYJvc2FtaS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ09ncmFuaWN6ZW5pYSBvY2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ1R5bGtvIGFydHlrdcWCeSBGQVEgeiBvY2VuxIUuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdPZ3JhbmljemVuaWEgY3phc293ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnVHlsa28gdXR3b3J6b25lIGFydHlrdcWCeSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnVHlsa28gYXJ0eWt1xYJ5IEZBUSB1dHdvcnpvbmUgcG9tacSZZHp5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbCB3eXN6dWtpd2FuaWEgamFrbyBTemFibG9uPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ051bWVyIGFydHlrdcWCdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N6dWthaiBhcnR5a3XFgsOzdyB6YSBwb21vY8SFIHPFgm93YSBrbHVjem93ZWdvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1BvYmxpY3puZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnV3LDs8SHIGRvIFByemVnbMSFZHUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdQb3RyemVidWplc3ogcHJhdyBvZGN6eXR1L3phcGlzdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0JyYWsga2F0ZWdvcmlpIGdkemllIHXFvHl0a293bmlrIHBvc2lhZGEgcHJhd2EgemFwaXN1L29kY3p5dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ0JyYWsgZG9tecWbbG5lZ28gasSZenlrYSBpIG5pZSBtb8W8bmEgc3R3b3J6ecSHIG5vd2Vnby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdQb3RyemVibmUgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhIHBvd2lubmEgcG9zaWFkYcSHIG5henfEmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1RhIGthdGVnb3JpYSBqdcW8IGlzdG5pZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGEga2F0ZWdvcmlhIGp1xbwgaXN0bmllamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHphZGVrbGFyb3dhbm8gQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnTmllIG1vxbxuYSB1c3VuxIXEhyBrYXRlZ29yaWkgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpYSBGQVEgemFrdHVhbGl6b3dhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdLYXRlZ29yaWEgRkFRIGRvZGFuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnVXN1xYQga2F0ZWdvcmnEmSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgemFkZWtsYXJvd2FubyBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTmllIG1hc3ogdXByYXduaWXFhCBkbyB0eWNoIGthdGVnb3JpaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnTmllIG1vxbxlc3ogdXN1bsSFxIcgYXJ0eWt1xYJ1IEZBUSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlcyBqZXN0IG5pZSBwcmF3aWTFgm93ZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGhpc3RvcmlpLCBuaWUgcG9kYW5vIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0b3JpYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEemllbm5payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnUG90cnplYm5hIGtvbmZpZ3VyYWNqYSBvcGNqaSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICdCcmFrIGtvbmZpZ3VyYWNqaSBvcGNqaSBkbGEgd2lkb2t1ICIlcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ0JyYWsgemFkZWtsYXJvd2FuZWdvIExhbmd1YWdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05hendhIGplc3Qgd3ltYWdhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGVuIGrEmXp5ayBqdcW8IGlzdG5pZWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdOaWUgbW/FvGVteSB1c3VuxIXEhyBqxJl6eWthICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdKxJl6eWsgRkFRIHpha3R1YWxpem93YW55ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSsSZenlrIEZBUSBkb2RhbnkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1VzdcWEIGrEmXp5ayAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnV3luaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdPc3RhdG5pYSBha3R1YWxpemFjamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnUG9sYSBEeW5hbWljem5lIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmllIHphZGVrbGFyb3dhbm8gJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ05pZSBtb8W8bmEgemHFgmFkb3dhxIcgTGFuZ3VhZ2VPYmplY3QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0JyYWsgV3luaWvDs3chJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOdW1lciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnT3N0YXRuaW8gWm1pZW5pb25lIHByemV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnQ3phcyB1dHdvcnplbmlhIGVsZW1lbnR1IEZBUSAocHJ6ZWQvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0N6YXMgdXR3b3J6ZW5pYSBlbGVtZW50dSBGQVEgKHBvbWnEmWR6eSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdDemFzIHptaWFueSBlbGVtZW50dSBGQVEgKHByemVkL3BvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdDemFzIHptaWFueSBlbGVtZW50dSBGQVEgKHBvbWnEmWR6eSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnUsOzd25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1dpxJlrc3plIG5pxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ1dpxJlrc3plIGx1YiByw7N3bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTW5pZWpzemUgbmnFvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTW5pZWpzemUgbHViIHLDs3duZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdQb3RyemVibnkgRmlsZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdEemnEmWt1amVteSB6YSBvZGRhbmllIGfFgm9zdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdKdcW8IHJheiBnxYJvc293YcWCZcWbISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05pZSB3eWJyYcWCZcWbIG9jZW55ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdNZWNoYW5pem0gZ8WCb3Nvd2FuaWEgbmllIGplc3Qgd8WCxIVjem9ueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdXc2thxbpuaWsgZ8WCb3Nvd2FuaWEgbmllIGplc3Qgb2tyZcWbbG9ueSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnRHJ1a3VqIGluZm9ybWFjasSZIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ1N0d29yem9uZSBwb21pxJlkenknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnUG90cnplYm5lIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydHlrdcWCeSBGQVEgKG5vd2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnR5a3XFgnkgRkFRIChvc3RhdG5pbyB6bWllbmlvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydHlrdcWCeSBGQVEgKDEwIG5hamxlcHN6eWNoKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ0JyYWsgemFkZWtsYXJvd2FuZWdvIFR5cHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ05pZSBtb8W8bmEgc3R3b3J6ecSHIHBsaWt1IFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBLbGllbnQgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEtsaWVudCAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFB1YmxpY3puZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIFB1YmxpY3puZSAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnVGVuIGFydHlrdcWCIGplc3QgcHVzdHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ09zdGF0bmlvIGRvZGFuZSBpbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdPc3RhdG5pbyB6YWt0dWFsaXpvd2FuZSBpbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGluZm9ybWFjamkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnd2V3bsSZdHJ6bnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd6ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWN6bnknOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnRG9kYWogYXJ0eWt1xYIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnS29sb3IgQ1NTIGRsYSB3eW5pa8OzdyBnxYJvc293YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGthdGVnb3JpYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnWmFyesSFZHphbmllIEthdGVnb3JpxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ01pZWpzY2EgcG8gcG90cnplY2lua3UgdyB3eW5pa2FjaCBnxYJvc293YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ0RvbXnFm2xuYSBuYXp3YSBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdEb215xZtsbnkgasSZenlrIGRsYSBhcnR5a3XFgsOzdyBGQVEgdyB0cnliaWUgcG9qZWR5bmN6ZWdvIGrEmXp5a2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdEb215xZtsbnkgcHJpb3J5dGV0IHpnxYJvc3plxYQgZGxhIHphdHdpZXJkemXFhCBhcnR5a3XFgsOzdyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdEb215xZtsbnkgc3RhbiBkbGEgcG96eWNqaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljamEgcG9sYSBmcmVlIHRleHQgcG96eWNqaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1VzdcWEIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWR5dHVqIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnV8WCxIVjeiB3aWVsZSBqxJl6eWvDs3cgdyBtb2R1bGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdXxYLEhWN6IG1lY2hhbml6bSBnxYJvc293YW5pYSB3IG1vZHVsZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRWtzcGxvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWR5Y2phIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnSGlzdG9yaWEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXQgRkFRIHcgcHJ6ZWdsxIVkemllIGR6aWVubmlrYSB3IHRyeWJpZSAiTWHFgmUiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXQgRkFRIHcgcHJ6ZWdsxIVkemllIHcgdHJ5YmllICJNYcWCZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0RydWt1aiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnUG9sZTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnUG9sZTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cGFhIGRsYSBha2NlcHRhY2ppIGFydHlrdcWCw7N3IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIHRlZ28gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0R6aWVubmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnWmFyesSFZHphbmllIErEmXp5a2llbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdQb8WCxIVjeiBpbm55IG9iaWVrdCB6IHR5bSBlbGVtZW50ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3N5bWFsbmEgbGljemJhIGFydHlrdcWCw7N3IEZBUSBrdMOzcmUgYsSZZMSFIHd5xZt3aWV0bGFuZSB3IFByemVnbMSFZHppZSBGQVEgdyBpbnRlcmZlanNpZSB1xbx5dGtvd25pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3N5bWFsbmEgbGljemJhIGFydHlrdcWCw7N3IEZBUSBrdMOzcmUgYsSZZMSFIHd5xZt3aWV0bGFuZSB3IFByemVnbMSFZHppZSBGQVEgdyBpbnRlcmZlanNpZSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICdOb3d5IEFydHlrdcWCIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm93ZSBhcnR5a3XFgnkgRkFRIHd5bWFnYWrEhSB6YXR3aWVyZHplbmlhIHByemVkIHB1Ymxpa2FjasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1d5ZHJ1a3VqIHRvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLb2xlamthIGRsYSB6YXR3aWVyZHplxYQgYWFydHlrdcWCw7N3IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnU3p1a2FqIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdSb3p3acSFemFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ09iamF3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdQb3p5Y2phIHBhc2thIG5hcnrEmWR6aW93ZWdvIGRsYSBza3LDs3R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnemV3bsSZdHJ6bmUgKGtsaWVuY2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICd3ZXduxJl0cnpuZSAoYWdlbmNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdwdWJsaWN6bmUgKHdzenlzY3kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ3B1YmxpY3puZSAocHVibGljKSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgYXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1BhbGF2cmFzLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaWEgdW1hIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIENhdGVnb3JpYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgQ2F0ZWdvcmlhIGRlIFBlcmd1bnRhcyBlIFJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ0VkaXRyYXIgY2F0ZWdvcmlhIGRlIFBlcmd1bnRhcyBlIFJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcmlhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnU2VsZWNpb25lIHBlbG8gbWVub3MgdW0gZ3J1cG8gZGUgcGVybWlzc8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwb3MgZGUgYWdlbnRlcyBjb20gYWNlc3NvIGEgYXJ0aWdvcyBuZXN0YSBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0NvbWVudMOhcmlvIGEgYXByZXNlbnRhciBubyBicm93c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdDb25maXJtYSBhIHJlbW/Dp8OjbyBkZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTsOjbyBwb2RlIHJlbW92ZXIgZXN0YSBjYXRlZ29yaWEuIFRlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBlL291IHVtYSBzdWJjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSB1dGlsaXphZGEgbm8ocykgc2VndWludGUocykgYXJ0aWdvKHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIHRlbSBhcyBzZWd1aW50ZXMgc3ViY2F0ZWdvcmlhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdDb25maXJtYSBhIHJlbW/Dp8OjbyBkZXN0ZSBhcnRpZ28/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUGVzcXVpc2EgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnQXN0ZXJpc2NvcygqKSBzw6NvIHBlcm1pdGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVzcXVpc2EgYXZhbsOnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdOZW5odW1hIHN1YmNhdGVnb3JpYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdMOzcmljbyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnU2VtIGRhZG9zIGRlIGRpw6FyaW8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgaWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBQZXJndW50YXMgZSBSZXNwb3N0YXMgZW0gTGluZ3VhIEVzdHJhbmdlaXJhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRhciBMaW5ndWFnZW0gZGUgUGVyZ3VudGFzIGUgUmVzcG9zdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3RhIGZ1bmNpb25hbGlkYWRlIHNlIGRlc2VqYSB0cmFiYWxoYXIgY29tIG3Dumx0aXBsb3MgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWRpY2lvbmFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdDb25maXJtYSBhIHJlbW/Dp8OjbyBkZXN0ZSBpZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ07Do28gcG9kZSByZW1vdmVyIGVzdGUgaWRpb21hLiDDiSB1dGlsaXphZG8gZW0gcGVsbyBtZW5vcyB1bSBhcnRpZ28gZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIMOpIHV0aWxpemFkbyBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb25maWd1cmHDp8O1ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWdvcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOZW5odW1hcyBQZXJndW50YXMgZSBSZXNwb3N0YXMgRW5jb250cmFkYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYXZyYS1jaGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnQ2xhc3NpZmljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdBcHJvdmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1hIGFsdGVyYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvIGRvIGFydGlnbyAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRhIGRlIGNyaWHDp8OjbyBkbyBhcnRpZ28gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgbW9kaWZpY2HDp8OjbyBkbyBhcnRpZ28gKGFudGVzL2RlcG9pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRGF0YSBkZSBtb2RpZmljYcOnw6NvIGRvIGFydGlnbyAoZW50cmUpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGludGVncmFsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTZWxlw6fDo28gZGUgcGVyZmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdWb3Rhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnU2VtIGRlZmluacOnw6NvIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RvcyBlc3BlY8OtZmljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnZXg6IElndWFsIGEgMTAgb3UgU3VwZXJpb3IgYSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnQ2xhc3NpZmljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1NlbSBjb25maWd1cmHDp8O1ZXMgZGUgcG9udHVhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ0NsYXNzaWZpY2HDp8OjbyBlc3BlY8OtZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2V4LiBJZ3VhbCBhIDI1JSBvdSBtYWlvciBxdWUgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdEYXRhIGRlIG1vZGlmaWNhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIGFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdDbGFzc2lmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdTZW0gdm90b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdTZW0gdm90b3MuIFNlamEgbyBwcmltZWlybyBhIGNsYXNzaWZpY2FyIGVzdGUgYXJ0aWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FycmVnYXIgQW5leG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQYXJhIGFicmlyIGFzIGxpZ2HDp8O1ZXMgYWJhaXhvIHBvZGVyw6EgbmVjZXNzaXRhciBkZSBwcmVtaXIgYSB0ZWNsYSBDVFJMIChvdSBDTUQpIG91IFNoaWZ0IChkZXBlbmRlbmRvIGRvIGJyb3dzZXIgZSBkbyBzaXN0ZW1hIG9wZXJhdGl2bykgcXVhbmRvIGNsaWNhciBzb2JyZSBhIGxpZ2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0VzdGUgYXJ0aWdvIGZvaSDDunRpbD8gVXRpbGl6ZSBhIGNsYXNzaWZpY2HDp8OjbyBwYXJhIG5vcyBhanVkYXIgYSBtZWxob3JhciBhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduw6NvIGFqdWRvdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdhanVkb3UgbXVpdG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FkaWNpb25hciBvIHTDrXR1bG8gZGEgRkFRIGFvIGFzc3VudG8gZG8gYXJ0aWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VyaXIgbyB0ZXh0byBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJpciBhIEZBUSBjb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcmlyIGxpZ2HDp8OjbyBwYXJhIGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcmlyIHRleHRvIGUgYSBsaWdhw6fDo28gcGFyYSBhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJpciBvIHRleHRvIGNvbXBsZXRvIGUgYSBsaWdhw6fDo28gcGFyYSBhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbmh1bSBhcnRpZ28gRkFRIGVuY29udHJhZG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnSXN0byBwb2RlIEFqdWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyByZXN1bHRhZG9zIMO6dGVpcyBwYXJhIG8gYXNzdW50byBvdSB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0luc2lyYSB1bSBhc3N1bnRvIG91IHRleHRvIHBhcmEgbGlzdGFyIGFydGlnb3MgcmVsZXZhbnRlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIG5vIHRleHRvIGludGVncmFsIGRvcyBhcnRpZ29zIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyacOnw7VlcyBkZSB2b3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnQXBlbmFzIGFydGlnb3MgY29tIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzaWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBjb20gY2xhc3NpZmljYcOnw6NvLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDo28gaG9yw6FyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ0FwZW5hcyBhcnRpZ29zIGNyaWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnQXBlbmFzIGFydGlnb3MgY3JpYWRvcyBlbnRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdHdWFyZGFyIG1vZGVsbyBkZSBwZXNxdWlzYT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIGFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Byb2N1cmFyIGFydGlnb3MgY29tIGEgcGFsYXZyYS1jaGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQdWJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWb2x0YXIgYW8gZXhwbG9yYWRvciBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ05lY2Vzc2l0YSBkZSBwZXJtaXNzw6NvIGRlIGVzY3JpdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZGFzIGNhdGVnb3JpYXMgb25kZSBvIHV0aWxpemFkb3IgcG9zc3VhIHBlcm1pc3PDtWVzIGRlIGxlaXR1cmEgZSBlc2NyaXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdOw6NvIGZvaSBlbmNvbnRyYWRvIHVtIGlkaW9tYSBwYWRyw6NvIGUgdMOjbyBwb3VjbyBjcmlhciB1bSBub3ZvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ05lY2Vzc8OhcmlvIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0EgY2F0ZWdvcmlhIGRldmUgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yaWEgasOhIGV4aXN0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdDYXRlZ29yeUlEIGVtIGZhbHRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgYXBhZ2FyIGEgY2F0ZWdvcmlhICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0VsaW1pbmFyIENhdGVnb3JpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJdGVtSUQgZW0gZmFsdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTsOjbyBkaXNww7VlIGRlIHBlcm1pc3PDtWVzIHBhcmEgZXN0YSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBhcGFnYXIgbyBhcnRpZ28gJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0EgQ2F0ZWdvcmlhSUQgJXMgw6kgaW52w6FsaWRhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIGZhbHRhIG8gSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0hpc3TDs3JpY28gZGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRGnDoXJpbyBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnw4kgbmVjZXNzw6FyaWEgYSBvcMOnw6NvIGRlIGNvbmZpZ3VyYcOnw6NvIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ0Egb3DDp8OjbyBkZSBjb25maWd1cmHDp8OjbyBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBwcmVjaXNhIHNlciB1bSB2YWxvciBIQVNIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBvcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIGEgdmlzdWFsaXphw6fDo28gIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnSWRpb21hSUQgZW0gZmFsdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ8OJIG5lY2Vzc8OhcmlvIG8gbm9tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFc3RhIExpbmd1YWdlbSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgYXBhZ2FyIG8gaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMaW5ndWFnZW0gZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMaW5ndWFnZW0gZGUgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1JlbW92ZXIgaWRpb21hICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfDmmx0aW1hIGF0dWFsaXphw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnQ2FtcG9zIGRpbsOibWljb3MgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICclcyBlbSBmYWx0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNhcnJlZ2FyIExhbmd1YWdlT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTZW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvIGRvIGFydGlnbyAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRhIGRlIGNyaWHDp8OjbyBkbyBhcnRpZ28gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgYWx0ZXJhw6fDo28gZG8gYXJ0aWdvIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRGF0YSBkZSBhbHRlcmHDp8OjbyBkbyBhcnRpZ28gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhbCBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1N1cGVyaW9yIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ01haW9yIG91IGlndWFsIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnSW5mZXJpb3IgYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3Igb3UgaWd1YWwgYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdOZWNlc3NpdGEgZG8gQXJxdWl2b0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdPYnJpZ2FkbyBwZWxvIHNldSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0rDoSB2b3RvdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdQb250dWHDp8OjbyBuw6NvIHNlbGVjY2lvbmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnQSBmdW5jaW9uYWxpZGFkZSBkZSB2b3Rhw6fDo28gbsOjbyBlc3TDoSBhY3RpdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnTyBwZXNvIGRvcyB2b3RvcyBuw6NvIGZvaSBkZWZpbmlkbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgYXJ0aWdvIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0NyaWFkbyBlbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfDiSBuZWNlc3PDoXJpbyBvIEl0ZW1JRC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlnb3MgZGUgRkFRIChjcmlhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlnb3MgZGUgRkFRIChhbHRlcmFkb3MgcmVjZW50ZW1lbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpZ29zIGRlIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ1RpcG8gZW0gZmFsdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ08gVGlwbyBkZXZlIHNlciDDmmx0aW1vQ3JpYWRvLCDDmmx0aW1vQWx0ZXJhZG8gb3UgVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNyaWFyIG8gZmljaGVpcm8gUlNTISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoRkFRLVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnRlICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBDbGllbnRlIChGQVEtVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUMO6YmxpY28gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBQw7pibGljbyAoRkFRLVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ05lY2Vzc2l0YSBkZSBjbGFzc2lmaWNhw6fDo28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdFc3RlIGFydGlnbyBlc3TDoSB2YXppbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0aWdvcyBGQVEgY3JpYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfDmmx0aW1vcyBhcnRpZ29zIEZBUSBhdHVhbGl6YWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGFydGlnb3MgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ1RpcG8gZGUgY29udGXDumRvJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdww7pibGljbyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ1VtIGZpbHRybyBkZSBIVE1MIGRlIG91dHB1dCBwYXJhIGFkaWNpb25hciBsaW5rcyBhbnRlcyBkZSB1bSBkZXRlcm1pbmFkbyB0ZXh0by4gTyBlbGVtZW50byBJbWFnZW0gcGVybWl0ZSBkb2lzIHRpcG9zIGRlIGlucHV0LiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGV4LiBmYXEucG5nKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIHBhcmEgaW1hZ2VucyBPVE9CTyBzZXLDoSB1c2Fkby4gQSBzZWd1bmRhIHBvc3NpYmlsaWRhZGUgw6kgaW5zZXJpciBvIGxpbmsgcGFyYSBhIGltYWdlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnQWRpY2lvbmFyIGFydGlnbyDDoCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDb3IgQ1NTIHBhcmEgbyByZXN1bHRhZG8gZGEgdm90YcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnVGVtcG8gZGUgcGVybWFuw6puY2lhIGVtIGNhY2hlIGRvcyBhcnRpZ29zIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgY2F0ZWdvcmlhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJ0dlc3TDo28gZGUgQ2F0ZWdvcmlhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ0ltcHJlc3PDo28gZGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdWaXN1YWxpemHDp8OjbyBkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnUGVzcXVpc2EgZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ07Dum1lcm8gZGUgY2FzYXMgZGVjaW1haXMgZG8gcmVzdWx0YWRvIGRhIHZvdGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWUgZGEgY2F0ZWdvcmlhIHBvciBvbWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc3PDo28gZG9zIGFydGlnb3MgZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZG8gdMOtdHVsbyBkbyBhcnRpZ28gRkFRIGEgc2VyIGV4aWJpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZGUgZG9zIHRpY2tldHMgcGFyYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNzw6NvIHBhcmEgbm92YXMgZW50cmFkYXMgbmEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIGRvcyB0aWNrZXRzIHBhcmEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBvIGRlIHRpY2tldHMgcGFyYSBhIGFwcm92YcOnw6NvIGRlIGFydGlnb3MgZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnVmFsb3IgZG8gcGFyw6JtZXRybyBcJ0FjdGlvblwnIG5hIGludGVyZmFjZSBww7pibGljYS4gRXN0ZSBwYXLDom1ldHJvIMOpIHVzYWRvIG5vcyBzY3JpcHRzIGRvIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIEFjw6fDtWVzIG9uZGUgdW0gYm90w6NvIGRlIGNvbmZpZ3VyYcOnw7VlcyBlc3TDoSBkaXNwb27DrXZlbCBuYSB3aWRnZXQgdGhlIG9iamVjdG9zIGxpZ2Fkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gIEVzdGFzIEFjw6fDtWVzIGRldmVtIGVzdGFyIHJlZ2lzdGFkYXMgbm9zIHNlZ3VpbnRlcyBmaWNoZWlyb3MgSlMgZSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnSW5kaXF1ZSBzZSBvIHTDrXR1bG8gZG8gRkFRIGRldmUgc2VyIGNvbmNhdGVuYWRvIGFvIGFzc3VudG8gZG8gYXJ0aWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YcOnw6NvIHBlcXVlbmEgZGUgdW0gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgcmVzdW1vIHBhcmEgbW9zdHJhciBhIHZpc3VhbGl6YcOnw6NvIHBlcXVlbmEgZGUgdW1hIGxpc3RhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBkZSBvcmRlbmHDp8OjbyBubyBFeHBsb3JhZG9yIGRlIEZBUSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gZGUgb3JkZW5hw6fDo28gbm8gRXhwbG9yYWRvciBkZSBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gZGUgb3JkZW5hw6fDo28gbm8gRXhwbG9yYWRvciBkZSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVuYcOnw6NvIHBhZHLDo28gZG9zIHJlc3VsdGFkb3Mgbm8gRXhwbG9yYWRvciBkZSBGQVEgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvcyBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbmHDp8OjbyBwYWRyw6NvIGRvcyByZXN1bHRhZG9zIG5vIEV4cGxvcmFkb3IgZGUgRkFRIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogbWFpcyBhbnRpZ29zIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbmHDp8OjbyBwYWRyw6NvIGRvcyByZXN1bHRhZG9zIG5vIEV4cGxvcmFkb3IgZGUgRkFRIG5hIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IG1haXMgYW50aWdvcyBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW5hw6fDo28gcGFkcsOjbyBkb3MgcmVzdWx0YWRvcyBuYSBwZXNxdWlzYSBkZSBGQVEgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvcyBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW5hw6fDo28gcGFkcsOjbyBkb3MgcmVzdWx0YWRvcyBuYSBwZXNxdWlzYSBkZSBGQVEgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBtYWlzIGFudGlnb3Mgbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbmHDp8OjbyBwYWRyw6NvIGRvcyByZXN1bHRhZG9zIG5hIHBlc3F1aXNhIGRlIEZBUSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBtYWlzIGFudGlnb3Mgbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBubyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGluZm9ybWHDp8OjbyBhIHNlciBpbnNlcmlkYSBubyBjaGFtYWRvIGJhc2VhZG8gZW0gRkFRLiAiVG9kbyBvIEZBUSIgaW5jbHVpIHRleHRvLCBhbmV4b3MgZSBpbWFnZW5zIGVtYnV0aWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5lIG9zIHBhcsOibWV0cm9zIHBhcmEgbyBiYWNrZW5kIGRvIGRhc2hib2FyZC4gIkxpbWl0ZSIgZGVmaW5lIG8gbsO6bWVybyBkZSBlbnRyYWRhcyBleGliaWRhcyBwb3IgcGFkcsOjby4gIkdydXBvIiDDqSB1c2FkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleC46IEdydXBvOiBhZG1pbiwgZ3J1cG8xLCBncnVwbzIpLiAiUGFkcsOjbyIgaW5kaWNhIHNlIG8gcGx1Z2luIMOpIGhhYmlsaXRhZG8gcG9yIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGhhYmlsaXTDoS1sbyBtYW51YWxtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIEV4cGxvcmFkb3IgZGUgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gam9ybmFsIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgcGVzcXVpc2EgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmUgb25kZSBvIGxpbmsgIkluc2VyaXIgRkFRIiBzZXLDoSBleGliaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmnDp8OjbyBkZSBjYW1wb3MgZGUgdGV4dG8gbGl2cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0FwYWdhciBlc3RhIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBubyBlY3LDoyBkZSBhZGljaW9uYXIgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5wIGVjcsOjIGRlIGVkaXRhciBGQVEgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgZXhpYmlkb3Mgbm8gZWNyw6MgZGUgaW1wcmltaXIgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5vIGVjcsOjIHZpc8OjbyBnZXJhbCBkZSBGQVEgZW0gZm9ybWF0byBwZXF1ZW5vIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5vIGVjcsOjIGRlIHpvb20gZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZGl0YXIgZXN0YSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIHbDoXJpb3MgaWRpb21hcyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnQXRpdmFyIGEgZnVuY2lvbmFsaWRhZGUgZGUgYXJ0aWdvcyByZWxhY2lvbmFkb3MgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQXRpdmFyIGZ1bmNpb25hbGlkYWRlIGRlIHZvdGHDp8OjbyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ0ZBUSBBSkFYIFJlc3BvbmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0ZBUSBBSkFYIFJlc3BvbmRlciBlbSBSaWNodGV4dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICfDgXJlYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnw4FyZWEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ0FwYWdhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0VkaXRhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ0hpc3TDs3JpY28gZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCAiUGVxdWVubyIgZG8gSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgRkFRICJQZXF1ZW5vIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRkFRIGJ1c2NhIHNlcnZpZG9yIHJvdGVhZG9yIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgY29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgbyBub21lIGRlIGNhZGEgY2FtcG8gZW0gdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIG9uZGUgYSBwZXNxdWlzYSByw6FwaWRhIGRldmUgc2VyIG1vc3RyYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm9ybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnTGltaXRlIHBhcmEgYSBwZXNxdWlzYSBjb25zdHJ1aXIgYSBsaXN0YSBkZSBwYWxhdnJhcy1jaGF2ZSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0xpbmsgZGUgb3V0cm8gYXJ0aWdvIHBhcmEgZXN0ZSBpdGVtIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0xpc3RhIGRvIG5vbWVzIGRlIGZpbGFzIHBhcmEgb3MgcXVhaXMgbyByZWN1cnNvIGRlc3NlIGFydGlnbyBlc3TDoSBhdGl2YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZG9zIHRpcG9zIGRlIGVzdGFkbyBxdWUgcG9kZSBzZXIgdXRpbGl6YWRvIG5hIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZG9zIHRpcG9zIGRlIGVzdGFkbyBxdWUgcG9kZSBzZXIgdXRpbGl6YWRvIG5hIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gam9ybmFsIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBsaXN0YSBkZSBlbnRyYWRhcyBkYSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIFBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5vIEpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlcmFyIHBlcmZpbCBIVE1MIE9wZW5TZWFyY2ggcGFyYSBwZXNxdWlzYXMgY3VydGFzIGRlIEZBUSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnTm92byBBcnRpZ28gZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOb3ZvcyBhcnRpZ29zIEZBUSBwcmVjaXNhbSBkZSBhcHJvdmHDp8OjbyBhbnRlcyBkZSBzZXIgcHVibGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBlbSDDumx0aW1hcyBhbHRlcmHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgY3JpYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBubyByZWN1cnNvIHRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdMaW1pdGUgZGUgc2HDrWRhIHBhcmEgb3MgYXJ0aWdvcyBkZXNzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gbW9zdHJhZG9zKSBkYSB2aXPDo28gZ2VyYWwgcGVxdWVuYSBkbyBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ1pvb20gZW0gRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICdCdXNjYSBGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnQ29uZGnDp8OjbyBwYXJhIGEgYXZhbGlhw6fDo28uIENoYXZlIGRldmUgc2VyIGVtIHBlcmNlbnR1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdQZXNxdWlzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICdQZXNxdWlzYXIgRkFRIFBlcXVlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICdQZXNxdWlzYXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnU2VsZWNpb25lIHF1YW50b3MgaXRlbnMgZGV2ZW0gc2VyIG1vc3RyYWRvcyBuYSB2aXPDo28gZ2VyYWwgZG8gZGnDoXJpbyAiU21hbGwiIHBvciBwYWRyw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjaW9uZSBxdWFudG9zIGl0ZW5zIGRldmVtIHNlciBtb3N0cmFkb3MgbmEgdmlzw6NvIGdlcmFsICJTbWFsbCIgcG9yIHBhZHLDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBwYWRyw6NvIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBubyBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIHBhZHLDo28gKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIGVtIEN1c3RvbWVyRkFRWm9vbSAoZSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIG3DoXhpbWEgKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIG5vIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgbcOheGltYSAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3MgZW0gQ3VzdG9tZXJGQVFab29tIChlIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYSBib3TDo28gIkluc2VyaXIgTGluayBGQVEiIGVtIEFtcGxpYcOnw6NvIHBlcXVlbmEgcGFyYSBvIGFydGlnb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMO1ZXMgIkluc2VyaXIgdGV4dG8gZG8gRkFRIGUgbGluayIgLyAiSW5zZXJpciB0b2RvIG8gRkFRIGUgbGluayIgZW0gQWdlbnRGQVFab29tU21hbGwgcGFyYSBBcnRpZ29zIGRlIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMO1ZXMgIkluc2VyaXIgdGV4dG8gZG8gRkFRIiAvICJJbnNlcmlyIHRvZG8gbyBGQVEiIGVtIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdNb3N0cmFyIGFydGlnbyBGQVEgY29tIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ01vc3RyYXIgY2FtaW5obyBGQVEgc2ltIC8gbsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmFyIGl0ZW5zIGludsOhbGlkb3Mgbm8gcmVzdWx0YWRvIGRvIEV4cGxvcmFkb3IgZGUgRkFRIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdNb3N0cmFyIGl0ZW5zIGRlIHN1YmNhdGVnb3JpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgYXMgw7psdGltYXMgYWx0ZXJhw6fDtWVzIGRlIGl0ZW5zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyDDumx0aW1vcyBpdGVucyBjcmlhZG9zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ01vc3RyZSBhcyBlc3RyZWxhcyBwYXJhIG9zIGFydGlnb3MgY29tIHVtYSBjbGFzc2lmaWNhw6fDo28gaWd1YWwgb3UgbWFpb3IgZG8gdmFsb3IgZGVmaW5pZG8gKGRlZmluYSBvIHZhbG9yIFwnMFwnIHBhcmEgZGVzYXRpdmFyIGEgc2HDrWRhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3MgMTAgaXRlbnMgc3VwZXJpb3IgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIHZvdGHDp8OjbyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGxpZ2FyIHVtIEZBUSBjb20gb3V0cm8gb2JqZXRvIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgZXhjbHVpciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIHZvbHRhciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1NpbnRvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnQXBlbmFzIHRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ08gaWRpb21hIHBhZHLDo28gcGFyYSBvcyBhcnRpZ29zIGRlc3NlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIHBhcmEgdW0gRkFRLCBleGVtcGxvIEZBUSAjIEtCICMgIyBNeUZBUS4gTyBwYWRyw6NvIMOpIEZBUSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0NoYW1hZG9cJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ29ycG8gZG8gY2hhbWFkbyBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdPIGFzc3VudG8gZG8gY2hhbWFkbyBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdJdGVtIGRhIGJhcnJhIGRlIGZlcnJhbWVudGFzIHBhcmEgdW0gYXRhbGhvLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybm8gKGNsaWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChhZ2VudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3DDumJsaWNvICh0b2RvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncMO6YmxpY28gKHDDumJsaWNvKSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1BhbGF2cmFzLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW1hIGNhdGVnb3JpYSDDqSBuZWNlc3PDoXJpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBDYXRlZ29yaWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnRWRpdGFyIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWRpY2lvbmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdBbHRlcmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3JpYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNpb25lIHBlbG8gbWVub3MgdW0gZ3J1cG8gZGUgcGVybWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhdGVuZGVudGVzIHF1ZSBwb2RlbSBhY2Vzc2FyIGFydGlnb3MgbmVzdGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnU2Vyw6EgZXhpYmlkbyBjb21vIGNvbWVudMOhcmlvIG5hIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgYXBhZ2FyIGVzdGEgY2F0ZWdvcmlhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ1ZvY8OqIG7Do28gcG9kZSByZW1vdmVyIGVzc2EgY2F0ZWdvcmlhLiBFbGEgw6kgdXRpbGl6YWRhIHBvciBwZWxvIG1lbm9zIHVtIEFydGlnbyBkYSBGQVEgZS9vdSDDqSBwYWkgZGUgcGVsbyBtZW5vcyB1bWEgb3V0cmEgY2F0ZWdvcmlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSB1dGlsaXphZGEgbm8ocykgc2VndWludGUocykgYXJ0aWdvKHMpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSBwYWkgZGFzIHNlZ3VpbnRlcyBzdWJjYXRlZ29yaWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGV4Y2x1aXIgZXN0ZSBhcnRpZ28gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFyIGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0J1c2NhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0NvcmluZ2FzIHPDo28gcGVybWl0aWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVzcXVpc2EgQXZhbsOnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlnb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnU3ViY2F0ZWdvcmlhcyBuw6NvIGVuY29udHJhZGFzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdMOzcmljbyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgSWRpb21hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRhciBJZGlvbWEgZG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3NlIHJlY3Vyc28gc2Ugdm9jw6ogZGVzZWphIHRyYWJhbGhhciBjb20gbcO6bHRpcGxvcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGV4Y2x1aXIgZXN0ZSBpZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ1ZvY8OqIG7Do28gcG9kZSBleGNsdWlyIGVzdGUgaWRpb21hLiBFbGUgw6kgdXNhZG8gZW0gcGVsbyBtZW5vcyB1bSBhcnRpZ28gRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIMOpIHVzYWRvIG5vcyBzZWd1aW50ZXMgYXJ0aWdvKHMpIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkZSBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpZ29zIEZBUSBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGRhZG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYXZyYS1jaGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90byAoZXguIElndWFsIGEgMTAgb3UgbWFpb3IgcXVlIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdQb250dWHDp8OjbyAoZXguIElndWFsIGEgMjUlIG91IG1haW9yIHF1ZSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXByb3ZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnQWx0ZXJhZG8gcGVsYSDDumx0aW1hIHZleiBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdIb3LDoXJpbyBkZSBjcmlhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdIb3LDoXJpbyBkZSBjcmlhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSG9yw6FyaW8gZGUgYWx0ZXJhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdIb3LDoXJpbyBkZSBhbHRlcmHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRLVRleHRvQ29tcGxldG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCdXNjYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTZWxlw6fDo28gZGUgcGVyZmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdTZW0gY29uZmlndXJhw6fDtWVzIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RvcyBlc3BlY8OtZmljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnZXguIElndWFsIGEgMTAgb3UgbWFpb3IgcXVlIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdQb250dWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnU2VtIGNvbmZpZ3VyYcOnw7VlcyBkZSBwb250dWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUG9udHVhw6fDo28gZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdleC4gSWd1YWwgYSAyNSUgb3UgbWFpb3IgcXVlIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0hvcsOhcmlvIGRlIGNyaWHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnSG9yw6FyaW8gZGUgYWx0ZXJhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ05vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTmVuaHVtIHZvdG8gZW5jb250cmFkbyEgU2VqYSBvIHByaW1laXJvIGEgYXZhbGlhciBlc3RlIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdCYWl4YXIgYW5leG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGFyYSBhYnJpciBsaW5rcyBub3MgYmxvY29zIGRlIGRlc2NyacOnw6NvIHNlZ3VpbnRlcywgdGFsdmV6IHZvY8OqIHByZWNpc2UgcHJlc3Npb25hciBDdHJsLCBDbWQgb3UgU2hpZnQgZW5xdWFudG8gY2xpY2Egbm8gbGluayAoZGVwZW5kZW5kbyBkbyBzZXUgbmF2ZWdhZG9yIG91IHNpc3RlbWEgb3BlcmFjaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0VzdGUgYXJ0aWdvIHRlIGFqdWRvdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb3VjbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdWl0byDDunRpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWRpY2lvbmFyIGFzc3VudG8gbm8gYXJ0aWdvIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJpciB0ZXh0byBkbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJpciB0b2RvIG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc2VyaXIgbGluayBkbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VyaXIgdGV4dG8gZG8gRkFRIGUgbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJpciB0b2RvIG8gRkFRIGUgbGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbmh1bSBhcnRpZ28gRkFRIGVuY29udHJhZG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnSXNzbyBwb2RlIHNlciDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyByZXN1bHRhZG9zIMO6dGVpcyBwYXJhIG8gYXNzdW50byBvdSB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0luc2lyYSB1bSBhc3N1bnRvIG91IHRleHRvIHBhcmEgbGlzdGFyIG9zIHJlY3Vyc29zIMO6dGVpcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIGNvbXBsZXRhIGRlIHRleHRvcyBlbSBhcnRpZ29zIEZBUSAocG9yIGV4ZW1wbG8sICJKbypvIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyacOnw7VlcyBkZSB2b3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBkZSBGQVEgY29tIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDtWVzIGRlIHBvbnR1YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjb20gcG9udHVhw6fDo28uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmnDp8O1ZXMgZGUgdGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjcmlhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjcmlhZG9zIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1BlcmZpbCBkZSBwZXNxdWlzYSBjb21vIG1vZGVsbz8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIEFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Byb2N1cmUgcG9yIGFydGlnb3MgY29tIHBhbGF2cmFzLWNoYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1DDumJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWb2x0YXIgcGFyYSBhIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnVm9jw6ogcHJlY2lzYSBkZSBwZXJtaXNzw6NvIHJ3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBjYXRlZ29yaWFzIG9uZGUgbyB1c3XDoXJpbyBwb3NzdWEgcGVybWlzc8OjbyBkZSBsZWl0dXJhIGUgZXNjcml0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTsOjbyBmb2kgZW5jb250cmFkbyB1bSBpZGlvbWEgcGFkcsOjbyBlIHTDo28gcG91Y28gY3JpYXIgdW0gbm92by4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdOZWNlc3PDoXJpYSBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbWEgY2F0ZWdvcmlhIHByZWNpc2EgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0Vzc2EgY2F0ZWdvcmlhIGrDoSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtYSBDYXRlZ29yeUlEIGZvaSBpbmZvcm1hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGNsdWlyIGEgY2F0ZWdvcmlhICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0V4Y2x1aXIgY2F0ZWdvcmlhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBJdGVtSUQgZm9pIGluZm9ybWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdWb2PDqiBuw6NvIHBvc3N1w60gaW5mb3JtYcOnw7VlcyBwYXJhIGVzc2EgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgZGVsZXRhciBvIGFydGlnbyAlcywgZG8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0EgQ2F0ZWdvcmlhSUQgJVMgw6kgaW52w6FsaWRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBtb3N0cmFyIG8gaGlzdMOzcmljbywgbsOjbyBmb2kgaW5mb3JtYWRvIHVtIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0w7NyaWNvIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0pvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnTmVjZXNzw6FyaWEgYSBvcMOnw6NvIGRlIGNvbmZpZ3VyYcOnw6NvIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ09ww6fDo28gZGUgY29uZmlndXJhw6fDo28gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgcHJlY2lzYSBzZXIgdW0gdmFsb3IgSEFTSCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkYXMgb3DDp8O1ZXMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBhIHZpc3VhbGl6YcOnw6NvICIlcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBJZGlvbWFJRCBpbmZvcm1hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ08gbm9tZSDDqSBvYnJpZ2F0w7NyaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXNzZSBpZGlvbWEgasOhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGFwYWdhciBvIGlkaW9tYSUgcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnSWRpb21hIGRlIEZBUSBhdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSWRpb21hIGRlIEZBUSBhZGljaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdFeGNsdWlyIGlkaW9tYSAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnw5psdGltYSBhdHVhbGl6YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBkaW7Dom1pY29zIGRhIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtICVzIGluZm9ybWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNhcnJlZ2FyIExhbmd1YWdlT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW5odW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBUZW1wbyBkZSBDcmlhw6fDo28gZGUgSXRlbSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgVGVtcG8gZGUgQ3JpYcOnw6NvIGRlIEl0ZW0gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBUZW1wbyBkZSBBbHRlcmHDp8OjbyBkbyBJdGVtIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnVGVtcG8gZGUgQWx0ZXJhw6fDo28gZGUgRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnSWd1YWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ01haW9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnTWFpb3ItaWd1YWwgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ01lbm9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3ItaWd1YWwgcXVlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ05lY2Vzc2l0YSBkbyBBcnF1aXZvSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ09icmlnYWRvIHBvciBzZXUgdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdWb2PDqiBqw6Egdm90b3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmVuaHVtYSBwb250dWHDp8OjbyBzZWxlY2lvbmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnTyBtZWNhbmlzbW8gZGUgdm90YcOnw6NvIG7Do28gZXN0w6EgaGFiaWxpdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdPIHBlc28gZG9zIHZvdG9zIG7Do28gZm9pIGRlZmluaWRvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBhcnRpZ28gZGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnQ3JpYWRvIGVudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ05lY2Vzc2l0YSBkbyBJdGVtSUQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpZ29zIGRhIEZBUSAocmVjw6ltIGNyaWFkb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpZ29zIGRhIEZBUSAoYWx0ZXJhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWdvcyBkYSBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdTZW0gVGlwbyBpbmZvcm1hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ1RpcG8gZGV2ZSBzZXIgw5psdGltb0NyaWFkbyBvdSDDmmx0aW1vQWx0ZXJhZG8gb3UgVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNyaWFyIG8gYXJxdWl2byBSU1MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChGQVEtVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIENsaWVudGUgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIENsaWVudGUgKEZBUS1UZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQw7pibGljbyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIFDDumJsaWNvIChGQVEtVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnVW1hIHByb3BvcsOnw6NvIMOpIG5lY2Vzc8OhcmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnTyBhcnRpZ28gZXN0w6EgdmF6aW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlnb3MgZGEgRkFRIGNyaWFkb3MgcmVjZW50ZW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdBcnRpZ29zIGRhIEZBUSBhdHVhbGl6YWRvcyByZWNlbnRlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWdvcyBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkZSBjb250ZcO6ZG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnVW0gZmlsdHJvIGRlIHNhw61kYSBIVE1MIHBhcmEgYWRpY2lvbmFyIGxpbmtzIHBhcmEgdHLDoXMgdW1hIHNlccO8w6puY2lhIGRlZmluaWRhLiBPIGVsZW1lbnRvIGRlIGltYWdlbSBwZXJtaXRlIGRvaXMgdGlwb3MgZGUgZW50cmFkYS4gUHJpbWVpcm8sIG8gbm9tZSBkZSB1bWEgaW1hZ2VtIChmYXEucG5nLCBwb3IgZXhlbXBsbykuIE5lc3RlIGNhc28sIG8gY2FtaW5obyBkYSBpbWFnZW0gT1RPQk8gc2Vyw6EgdXNhZG8uIEEgc2VndW5kYSBwb3NzaWJpbGlkYWRlIMOpIGluc2VyaXIgbyBsaW5rIHBhcmEgYSBpbWFnZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0FkaWNpb25hciBBcnRpZ28gZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIGNvciBwYXJhIG8gcmVzdWx0YWRvIGRhIHZvdGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1RlbXBvIGRlIGV4cGlyYcOnw6NvIGRlIGNhY2hlIHBhcmEgaXRlbnMgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICdHZXJlbmNpYW1lbnRvIGRlIENhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUSBkZSBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnWm9vbSBlbSBGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdCdXNjYSBlbSBGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0ZBUSBkZSBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDYXNhcyBkZWNpbWFpcyBkbyByZXN1bHRhZG8gZGEgdm90YcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tZSBwYWRyw6NvIGRhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwYWRyw6NvIHBhcmEgb3MgYXJ0aWdvcyBGQVEgbm8gbW9kbyBkZSBpZGlvbWEgw7puaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gcGFkcsOjbyBkb3MgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIGRlIEZBUSBhIHNlcmVtIGV4aWJpZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlvcmlkYWRlIHBhZHLDo28gZGUgY2hhbWFkb3MgcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0VzdGFkbyBwYWRyw6NvIGRlIGVudHJhZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBhZHLDo28gZGUgY2hhbWFkb3MgcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVGlwbyBwYWRyw6NvIGRvIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkZSBhcnRpZ29zIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1ZhbG9yIHBhZHLDo28gcGFyYSBvIHBhcsOibWV0cm8gZGUgUmVjdXJzbyBwYXJhIGEgaW50ZXJmYWNlIHDDumJsaWNhLiBPIHBhcsOibWV0cm8gZGUgYcOnw6NvIMOpIHVzYWRvIG5vcyBzY3JpcHRzIGRvIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmEgQcOnw7VlcyBvbmRlIHVtIGJvdMOjbyBkZSBjb25maWd1cmHDp8O1ZXMgZXN0w6EgZGlzcG9uw612ZWwgbm8gd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGU9ImNvbXBsZXgiKS4gT2JzZXJ2ZSBxdWUgZXNzYXMgYcOnw7VlcyBkZXZlbSB0ZXIgcmVnaXN0cmFkbyBvcyBzZWd1aW50ZXMgYXJxdWl2b3MgSlMgZSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGUgQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmUgc2UgbyB0w610dWxvIGRvIEZBUSBkZXZlIHNlciBjb25jYXRlbmFkbyBhbyBhc3N1bnRvIGRvIGFydGlnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemHDp8OjbyBwZXF1ZW5hIGRlIHVtIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemFyIGRlIHVtYSBwZXF1ZW5hIGxpc3RhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBlbSB1bWEgcGVzcXVpc2EgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBGQVEgcGFyYSBjbGFzc2lmaWNhciBvIEZBUSBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgcGVzcXVpc2EgZGUgRkFRIHBhZHLDo28gbmEgdGVsYSBkZSBwcm9jdXJhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGEgaW5mb3JtYcOnw6NvIGEgc2VyIGluc2VyaWRhIG5vIGNoYW1hZG8gYmFzZWFkbyBlbSBGQVEuICJUb2RvIG8gRkFRIiBpbmNsdWkgdGV4dG8sIGFuZXhvcyBlIGltYWdlbnMgZW1idXRpZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmUgb3MgcGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZG8gZGFzaGJvYXJkLiAiTGltaXRlIiBkZWZpbmUgbyBuw7ptZXJvIGRlIGVudHJhZGFzIGV4aWJpZGFzIHBvciBwYWRyw6NvLiAiR3J1cG8iIMOpIHVzYWRvIHBhcmEgcmVzdHJpbmdpciBvIGFjZXNzbyBhbyBwbHVnaW4gKGV4LjogR3J1cG86IGFkbWluLCBncnVwbzEsIGdydXBvMikuICJQYWRyw6NvIiBpbmRpY2Egc2UgbyBwbHVnaW4gw6kgaGFiaWxpdGFkbyBwb3IgcGFkcsOjbyBvdSBzZSBvIHVzdcOhcmlvIHByZWNpc2EgaGFiaWxpdMOhLWxvIG1hbnVhbG1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gR2VyZW5jaWFkb3IgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbm8gam9ybmFsIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgcGVzcXVpc2EgRkFRLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmUgb25kZSBvIGxpbmsgIkluc2VyaXIgRkFRIiBzZXLDoSBleGliaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmnDp8OjbyBkZSBjYW1wb3MgZGUgdGV4dG8gbGl2cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0V4Y2x1aXIgZXN0ZSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgZXhpYmlkb3MgbmEgdGVsYSBkZSBhZGljaW9uYXIgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5hIHRlbGEgZGUgZWRpdGFyIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBuYSB0ZWxhIGRlIGltcHJpbWlyIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgcGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5hIHRlbGEgdmlzw6NvIGdlcmFsIGRlIEZBUSBlbSBmb3JtYXRvIHBlcXVlbm8gZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgZXhpYmlkb3MgbmEgdGVsYSBkZSB6b29tIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdGFyIGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciB2w6FyaW9zIGlkaW9tYXMgbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ0F0aXZhciBvcyByZWN1cnNvcyBkZXNzZSBhcnRpZ28gcGFyYSBhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1Blcm1pdGlyIG1lY2FuaXNtbyBkZSBBdmFsaWHDp8OjbyBubyBtw7NkdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3Jhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZW0gUmljaHRleHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnw4FyZWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ8OBcmVhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdEZWxldGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnSGlzdMOzcmljbyBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsICJQZXF1ZW5vIiBkbyBKb3JuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCBGQVEgIlBlcXVlbm8iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdpbXByaW1pciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdGQVEgYnVzY2Egc2Vydmlkb3Igcm90ZWFkb3IgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnQ2FtcG80JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0NhbXBvNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0ZBUSBjb21wbGV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwbyBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdMOzcmljbyBkZXN0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgY2FtcG9zIGludGVybm9zIGRlIHVtIENoYW1hZG8gYmFzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBvIG5vbWUgZGUgY2FkYSBjYW1wbyBlbSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgb25kZSBhIHBlc3F1aXNhIHLDoXBpZGEgZGV2ZSBzZXIgbW9zdHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKb3JuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgaWRpb21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ0dlcmVuY2lhbWVudG8gZGUgSWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdMaW1pdGUgcGFyYSBhIHBlc3F1aXNhIGNvbnN0cnVpciBhIGxpc3RhIGRlIHBhbGF2cmFzLWNoYXZlIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBkZSBvdXRybyBhcnRpZ28gcGFyYSBlc3RlIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgZG8gbm9tZXMgZGUgZmlsYXMgcGFyYSBvcyBxdWFpcyBvIHJlY3Vyc28gZGVzc2UgYXJ0aWdvIGVzdMOhIGF0aXZhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRvcyB0aXBvcyBkZSBlc3RhZG8gcXVlIHBvZGUgc2VyIHV0aWxpemFkbyBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBqb3JuYWwgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkZSB1bWEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHB1YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBsaXN0YSBkZSBlbnRyYWRhcyBkYSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBsaXN0YSBkZSBlbnRyYWRhcyBkYSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIFBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIFBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgUGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3Mgbm8gSm9ybmFsIEZBUSBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgZ2VyYXIgcGVyZmlsIEhUTUwgT3BlblNlYXJjaCBwYXJhIHBlc3F1aXNhcyBjdXJ0YXMgZGUgRkFRIG5hIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICdOb3ZvIEFydGlnbyBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vdm9zIGFydGlnb3MgRkFRIHByZWNpc2FtIGRlIGFwcm92YcOnw6NvIGFudGVzIGRlIHNlciBwdWJsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBwdWJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGVtIMO6bHRpbWFzIGFsdGVyYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBlbSDDumx0aW1hcyBjcmlhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIG5vIHJlY3Vyc28gdG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ0xpbWl0ZSBkZSBzYcOtZGEgcGFyYSBvcyBhcnRpZ29zIGRlc3NlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRvIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIG1vc3RyYWRvcykgZGEgdmlzw6NvIGdlcmFsIHBlcXVlbmEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnWm9vbSBlbSBGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ0J1c2NhIEZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZpbGEgcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdDb25kacOnw6NvIHBhcmEgYSBhdmFsaWHDp8Ojby4gQ2hhdmUgZGV2ZSBzZXIgZW0gcGVyY2VudHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1Blc3F1aXNhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJ1Blc3F1aXNhciBGQVEgUGVxdWVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ1Blc3F1aXNhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdTZWxlY2lvbmUgcXVhbnRvcyBpdGVucyBkZXZlbSBzZXIgbW9zdHJhZG9zIG5hIHZpc8OjbyBnZXJhbCBkbyBkacOhcmlvICJTbWFsbCIgcG9yIHBhZHLDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnU2VsZWNpb25lIHF1YW50b3MgaXRlbnMgZGV2ZW0gc2VyIG1vc3RyYWRvcyBuYSB2aXPDo28gZ2VyYWwgIlNtYWxsIiBwb3IgcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIHBhZHLDo28gKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIG5vIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgcGFkcsOjbyAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3MgZW0gQ3VzdG9tZXJGQVFab29tIChlIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgbcOheGltYSAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3Mgbm8gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBtw6F4aW1hIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBlbSBDdXN0b21lckZBUVpvb20gKGUgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhIGJvdMOjbyAiSW5zZXJpciBMaW5rIEZBUSIgZW0gQW1wbGlhw6fDo28gcGVxdWVuYSBwYXJhIG8gYXJ0aWdvcyBGQVEgcMO6YmxpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7VlcyAiSW5zZXJpciB0ZXh0byBkbyBGQVEgZSBsaW5rIiAvICJJbnNlcmlyIHRvZG8gbyBGQVEgZSBsaW5rIiBlbSBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIEFydGlnb3MgZGUgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7VlcyAiSW5zZXJpciB0ZXh0byBkbyBGQVEiIC8gIkluc2VyaXIgdG9kbyBvIEZBUSIgZW0gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ01vc3RyYXIgYXJ0aWdvIEZBUSBjb20gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnTW9zdHJhciBjYW1pbmhvIEZBUSBzaW0gLyBuw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYXIgaXRlbnMgaW52w6FsaWRvcyBubyByZXN1bHRhZG8gZG8gRXhwbG9yYWRvciBkZSBGQVEgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ01vc3RyYXIgaXRlbnMgZGUgc3ViY2F0ZWdvcmlhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBhcyDDumx0aW1hcyBhbHRlcmHDp8O1ZXMgZGUgaXRlbnMgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIG9zIMO6bHRpbW9zIGl0ZW5zIGNyaWFkb3MgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnTW9zdHJlIGFzIGVzdHJlbGFzIHBhcmEgb3MgYXJ0aWdvcyBjb20gdW1hIGNsYXNzaWZpY2HDp8OjbyBpZ3VhbCBvdSBtYWlvciBkbyB2YWxvciBkZWZpbmlkbyAoZGVmaW5hIG8gdmFsb3IgXCcwXCcgcGFyYSBkZXNhdGl2YXIgYSBzYcOtZGEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyAxMCBpdGVucyBzdXBlcmlvciBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgdm90YcOnw6NvIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgbGlnYXIgdW0gRkFRIGNvbSBvdXRybyBvYmpldG8gbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBleGNsdWlyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlc3NhciBvIGhpc3TDs3JpY28gZGUgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgdm9sdGFyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU2ludG9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdBcGVuYXMgdGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTyBpZGlvbWEgcGFkcsOjbyBwYXJhIG9zIGFydGlnb3MgZGVzc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgcGFyYSB1bSBGQVEsIGV4ZW1wbG8gRkFRICMgS0IgIyAjIE15RkFRLiBPIHBhZHLDo28gw6kgRkFRICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdGQVFcJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0NoYW1hZG9cJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnQ2hhbWFkb1wnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDb3JwbyBkbyBjaGFtYWRvIHBhcmEgYXByb3Zhw6fDo28gZGUgdW0gYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ08gYXNzdW50byBkbyBjaGFtYWRvIHBhcmEgYXByb3Zhw6fDo28gZGUgdW0gYXJ0aWdvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ0l0ZW0gZGEgYmFycmEgZGUgZmVycmFtZW50YXMgcGFyYSB1bSBhdGFsaG8uICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGF0ZW5kZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdww7pibGljbyAocMO6YmxpY28pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfQndGD0LbQvdC+INCy0YvQsdGA0LDRgtGMINC60LDRgtC10LPQvtGA0LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC60LDRgtC10LPQvtGA0LjRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQutCw0YLQtdCz0L7RgNC40Y4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQo9C00LDQu9C40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9C+0LTRgNCw0LfQtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQo9C60LDQttC40YLQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdGDINCz0YDRg9C/0L/Rgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0L/RiyDQsNCz0LXQvdGC0L7Qsiwg0LjQvNC10Y7RidC40YUg0LTQvtGB0YLRg9C/INC6INGB0YLQsNGC0YzRj9C8INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC10YIg0L/QvtC60LDQt9Cw0L3QviDQsiBFeHBsb3JlciDQutCw0Log0LrQvtC80LzQtdC90YLQsNGA0LjQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn0K3RgtGDINC60LDRgtC10LPQvtGA0LjRjiDRg9C00LDQu9GP0YLRjCDQvdC10LvRjNC30Y8hINCSINC90LXQuSDRgdC+0LTQtdGA0LbQuNGC0YHRjyDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSDQuC/QuNC70Lgg0L7QvdCwINGP0LLQu9GP0LXRgtGB0Y8g0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC00LvRjyDQtNGA0YPQs9C40YUg0LrQsNGC0LXQs9C+0YDQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn0JIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC40LzQtdGO0YLRgdGPINGB0LvQtdC00YPRjtGJ0LjQtSDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ9Ct0YLQsCDQutCw0YLQtdCz0L7RgNC40Y8g0Y/QstC70Y/QtdGC0YHRjyDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LTQu9GPINGB0LvQtdC00YPRjtGJ0LjRhSDQv9C+0LTRgNCw0LfQtNC10LvQvtCyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0LggRkFRISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUSDQntCx0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ9CR0YvRgdGC0YDRi9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ9Cg0LDQt9GA0LXRiNC10L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSDRgdC40LzQstC+0LvQvtCyINGI0LDQsdC70L7QvdCwINGC0LjQv9CwIFwnKlwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQu9GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTRgNCw0LfQtNC10LvRiyDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LTQu9GPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1INC40YHRgtC+0YDQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9GFINC20YPRgNC90LDQu9CwIEZBUSDQvdC10YIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INGP0LfRi9C60LDQvNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAn0JTQvtCx0LDQstC40YLRjCDRj9C30YvQuiDQtNC70Y8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAn0JjQt9C80LXQvdC40YLRjCDRj9C30YvQuiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRjdGC0YMg0YTRg9C90LrRhtC40Y4g0L/RgNC4INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGA0LDQsdC+0YLRiyDRgSDQvdC10YHQutC+0LvRjNC60LjQvNC4INGP0LfRi9C60LDQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7Qs9C+INGP0LfRi9C60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ9Ct0YLQvtGCINGP0LfRi9C6INGD0LTQsNC70Y/RgtGMINC90LXQu9GM0LfRjy4g0J3QsCDQvdGR0Lwg0L3QsNC/0LjRgdCw0L3QsCDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfQrdGC0L7RgiDRj9C30YvQuiDQuNGB0L/QvtC70YzQt9C+0LLQsNC9INCyINGB0LvQtdC00YPRjtGJ0LjRhSDRgdGC0LDRgtGM0Y/RhSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LrQvtC90YLQtdC60YHRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1IEZBUSDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAn0LjQtyA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ9Ca0LvRjtGH0LXQstC+0LUg0YHQu9C+0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn0JPQvtC70L7RgdC+0LLQsNC90LjQtSAo0L3QsNC/0YDQuNC80LXRgCwg0YDQsNCy0L3QviAxMCDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ9Ce0YbQtdC90LjRgtGMICjQvdCw0L/RgNC40LzQtdGALCDRgNCw0LLQvdC+IDI1JSDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ9Cj0YLQstC10YDQttC00LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNC90LjQvCDQuNC30LzQtdC90LjQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80Y8g0YHQvtC30LTQsNC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQtNC+L9C/0L7RgdC70LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ9CS0YDQtdC80Y8g0YHQvtC30LTQsNC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQvNC10LbQtNGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80Y8g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC00L4v0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzRjyDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LzQtdC20LTRgyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAn0J/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQuSDQv9C+0LjRgdC6INCyIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAn0JLRi9Cx0L7RgCDRiNCw0LHQu9C+0L3QsCDQv9C+0LjRgdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ9CT0L7Qu9C+0YHQvtCy0LDRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LPQvtC70L7RgdC+0LLQsNC90LjRjyDQvdC1INC30LDQtNCw0L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ9Ce0L/RgNC10LTQtdC70LXQvdC90YvQtSDQs9C+0LvQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAn0L3QsNC/0YDQuNC80LXRgCwg0YDQsNCy0L3QviAxMCDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ9Ce0YbQtdC90LjRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LTQu9GPINC+0YbQtdC90LrQuC/RgNC10LnRgtC40L3Qs9CwINC90LUg0LfQsNC00LDQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfQntC/0YDQtdC00LXQtNC10LvQtdC90L3Ri9C1INC+0YbQtdC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ9C90LDQv9GA0LjQvNC10YAsINGA0LDQstC90L4gMjUlINC40LvQuCDQsdC+0LvQtdC1INGH0LXQvCA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ9CS0YDQtdC80Y8g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ9Ce0YbQtdC90LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQk9C+0LvQvtGB0L7QsiDQvdC1INC90LDQudC00LXQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn0J7RhtC10L3QvtC6INC90LUg0L3QsNC50LTQtdC90L4hINCe0YbQtdC90LjRgtC1INGN0YLRgyDRgdGC0LDRgtGM0Y4gRkFRINC/0LXRgNCy0YvQvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ9Ch0LrQsNGH0LDRgtGMINCy0LvQvtC20LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICfQlNC70Y8g0L7RgtC60YDRi9GC0LjRjyDRgdGB0YvQu9C60Lgg0LIg0YHQu9C10LTRg9GO0YnQtdC8INGB0L7QvtCx0YnQtdC90LjQuC/Qt9Cw0LzQtdGC0LrQtSDQvdC10L7QsdGF0L7QtNC40LzQviDQvdCw0LbQsNGC0Ywg0Lgg0YPQtNC10YDQttC40LLQsNGC0Ywg0LrQu9Cw0LLQuNGI0YMgQ3RybCDQuNC70LggQ21kINC40LvQuCBTaGlmdCDQuCDQutC70LjQutC90YPRgtGMINC/0L4g0YHRgdGL0LvQutC1ICjQt9Cw0LLQuNGB0LjRgiDQvtGCINCy0LDRiNC10LPQviDQsdGA0LDRg9C30LXRgNCwINC4INCe0KEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ9Cd0LDRgdC60L7Qu9GM0LrQviDQsdGL0LvQsCDQv9C+0LvQtdC30L3QsCDRjdGC0LAg0YHRgtCw0YLRjNGPPyDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L7RhtC10L3QuNGC0LUg0LXRkSwg0YfRgtC+0LHRiyDQvNGLINC80L7Qs9C70Lgg0YPQu9GD0YfRiNC40YLRjCDQsdCw0LfRgyBGQVEuINCh0L/QsNGB0LjQsdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ9Cx0LXRgdC/0L7Qu9C10LfQvdCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn0L7Rh9C10L3RjCDQv9C+0LvQtdC30L3QsNGPJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC30LDQs9C+0LvQvtCy0L7QuiDQuiDRgdGC0LDRgtGM0LUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0YLQtdC60YHRgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAn0JLRgdGC0LDQstC40YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0YHRgdGL0LvQutGDINC90LAgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRINC4INGB0YHRi9C70LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAn0JLRgdGC0LDQstC40YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y4gRkFRINC4INGB0YHRi9C70LrRgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEg0L3QtSDQvdCw0LnQtNC10L3Riy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfQrdGC0L4g0LzQvtC20LXRgiDQsdGL0YLRjCDQktCw0Lwg0L/QvtC70LXQt9C90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ9Cd0LXRgiDQv9C+0LvQtdC30L3Ri9GFINGB0YLQsNGC0LXQuSDQvdCwINGN0YLRgyDRgtC10LzRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ9CS0LLQtdC00LjRgtC1INGC0LXQvNGDINC40LvQuCDRgtC10LrRgdGCINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC/0L7Qu9C10LfQvdGL0YUg0YHQv9GA0LDQstC+0YfQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ9Cf0L7Qu9C90L7RgtC10LrRgdGC0L7QstGL0Lkg0L/QvtC40YHQuiDQsiDRgdGC0LDRgtGM0Y/RhSBGQVEgKNC90LDQv9GA0LjQvNC10YAsICLQsNCy0YLQvtC8KtC60LgiINC40LvQuCAi0JzQvtGB0LoqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC90LAg0LPQvtC70L7RgdC+0LLQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn0KLQvtC70YzQutC+INGB0YLQsNGC0YzQuCBGQVEg0YEg0LPQvtC70L7RgdCw0LzQuC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40Y8g0L7RhtC10L3QvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ9Ci0L7Qu9GM0LrQviDRgdGC0LDRgtGM0LggRkFRINGBINC+0YbQtdC90LrQvtC5Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn0JLRgNC10LzQtdC90L3Ri9C1INGA0LDQvNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ9Ci0L7Qu9GM0LrQviDRgdGC0LDRgtGM0LggRkFRINGB0L7Qt9C00LDQvdC90YvQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfQotC+0LvRjNC60L4g0YHRgtCw0YLRjNC4IEZBUSwg0YHQvtC30LTQsNC90L3Ri9C1INC80LXQttC00YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAn0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC/0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LjRgdC60LAg0LrQsNC6INGI0LDQsdC70L7QvT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGB0YLQsNGC0YzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLQtdC5INC/0L4g0LrQu9GO0YfQtdCy0L7QvNGDINGB0LvQvtCy0YMnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ9CS0LXRgNC90YPRgtGM0YHRjyDQsiDQvtCx0LfQvtGAIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80Ysg0L/RgNCw0LLQsCBydyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0LrQsNGC0LXQs9C+0YDQuNC4INCyINC60L7RgtC+0YDRi9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQuNC80LXQtdGCINC/0YDQsNCy0LAg0YfRgtC10L3QuNGPL9C30LDQv9C40YHQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAn0J3QtSDRg9C60LDQt9Cw0L0g0Y/Qt9GL0Log0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0Lgg0L3QtdCy0L7Qt9C80L7QttC90L4g0LfQsNC00LDRgtGMINC90L7QstGL0LkuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAn0KLRgNC10LHRg9C10YLRgdGPIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ9CjINC60LDRgtC10LPQvtGA0LjQuCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L3QsNC30LLQsNC90LjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ9Ci0LDQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQotCw0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnQ2F0ZWdvcnlJRCDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YPQtNCw0LvQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8gRkFRINC40LfQvNC10L3QtdC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8gRkFRINC00L7QsdCw0LLQu9C10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn0KPQtNCw0LvQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0YPQutCw0LfQsNC9IEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICfQoyDQstCw0YEg0L3QtdGCINC/0YDQsNCyINC90LAg0LTQvtGB0YLRg9C/INC6INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDRgdGC0LDRgtGM0Y4gRkFRICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdDYXRlZ29yeUlEICVzINC90LXQstC10YDQtdC9Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LjRgdGC0L7RgNC40Y4sINGC0LDQuiDQutCw0Log0L3QtSDQt9Cw0LTQsNC9IEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICfQmNGB0YLQvtGA0LjRjyBGQVEgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICfQndC10L7QsdGF0L7QtNC40LzQviDQvdCw0YHRgtGA0L7QuNGC0Ywg0L/QsNGA0LDQvNC10YLRgCBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGAIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IC0g0YLRgNC10LHRg9C10YLRgdGPINGB0YHRi9C70LrQsCDQvdCwIEhBU0ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAn0J3QtSDQvdCw0YHRgtGA0L7QtdC9INC+0LHQt9C+0YAgIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnTGFuZ3VhZ2VJRCDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC30LDQtNCw0YLRjCDQvdCw0LfQstCw0L3QuNC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ci0LDQutC+0Lkg0Y/Qt9GL0Log0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfQndC1INGD0LTQsNC70L7RgdGMINGD0LTQsNC70LjRgtGMINGP0LfRi9C6ICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfQr9C30YvQuiDQtNC70Y8gRkFRINC40LfQvNC10L3RkdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn0K/Qt9GL0Log0LTQu9GPIEZBUSDQtNC+0LHQsNCy0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfQo9C00LDQu9C40YLRjCDRj9C30YvQuiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAn0KDQtdC30YPQu9GM0YLQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn0J/QvtGB0LvQtdC00L3QtdC1INC+0LHQvdC+0LLQu9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyDQtNC70Y8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICclcyDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ9C90LXQstC+0LfQvNC+0LbQvdC+INC30LDQs9GA0YPQt9C40YLRjCBMYW5ndWFnZU9iamVjdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0J3QtdGCINGA0LXQt9GD0LvRjNGC0LDRgtCwL9Cg0LXRiNC10L3QuNGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QuNC8INC40LfQvNC10L3QuNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC00L4v0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC80LXQttC00YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzRjyDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LTQvi/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNGPINC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQvNC10LbQtNGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICfRgNCw0LLQvdGP0LXRgtGB0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAn0LHQvtC70YzRiNC1INGH0LXQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAn0LHQvtC70YzRiNC1INC40LvQuCDRgNCw0LLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ9C80LXQvdGM0YjQtSDRh9C10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ9C80LXQvdGM0YjQtSDQuNC70Lgg0YDQsNCy0L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gRmlsZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQodC/0LDRgdC40LHQviDQt9CwINCy0LDRiNGDINC+0YbQtdC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfQktGLINGD0LbQtSDQv9C+0YHRgtCw0LLQuNC70Lgg0L7RhtC10L3QutGDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Ce0YbQtdC90LrQsCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfQnNC10YXQsNC90LjQt9C8INCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8g0L3QtSDQstC60LvRjtGH0LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICfQn9GA0LXQtNC10LvRjNC90YvQuSDRg9GA0L7QstC10L3RjCDQtNC70Y8g0LPQvtC70L7RgdC+0LLQsNC90LjRjyDQvdC1INC30LDQtNCw0L0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ9Cf0LXRh9Cw0YLRjCDRgdGC0LDRgtGM0LggRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQvtC30LTQsNC90LAg0LzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSAo0L3QvtCy0YvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKNC+0LHQvdC+0LLQu9GR0L3QvdGL0LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICfQndC1INGD0LrQsNC30LDQvSDQotC40L8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ9Ci0LjQvyDQtNC+0LvQttC10L0g0LjQvNC10YLRjCDQt9C90LDRh9C10L3QuNC1IExhc3RDcmVhdGUv0J/QvtGB0LvQtdC00L3QuNC1INGB0L7Qt9C00LDQvdC90YvQtSDQuNC70LggTGFzdENoYW5nZS/Qn9C+0YHQu9C10LTQvdC40LUg0LjQt9C80LXQvdC10L3QvdGL0LUg0LjQu9C4IFRvcDEwLzEwINC70YPRh9GI0LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDRgdC+0LfQtNCw0YLRjCBSU1Mg0YTQsNC50LshJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtINCa0LvQuNC10L3RgiAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g0JrQu9C40LXQvdGCIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0LkgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDQntCx0YnQtdC00L7RgdGC0YPQv9C90YvQuSAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ9Cd0YPQttC90LAg0L7RhtC10L3QutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn0K3RgtCwINGB0YLQsNGC0YzRjyDQv9GD0YHRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQndC+0LLRi9C1INGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCDRgdGC0LDRgtC10LkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ9Ci0LjQvyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfRgdC70YPQttC10LHQvdC+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQvtGC0LrRgNGL0YLQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1JzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAn0KTQuNC70YzRgtGAINC00LvRjyBIVE1MINC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgdGB0YvQu9C60Lgg0L/QvtC30LDQtNC4INC30LDQtNCw0L3QvdC+0Lkg0YHRgtGA0L7QutC4LiDQrdC70LXQvNC10L3RgiBJbWFnZSDQvNC+0LbQtdGCINCx0YvRgtGMINCy0LLQtdC00LXQvSDQtNCy0YPQvNGPINGB0L/QvtGB0L7QsdCw0LzQuC4g0J/QtdGA0LLRi9C5IC0g0Y3RgtC+INC40LzRjyDRhNCw0LnQu9CwKNGCLtC1LiBmYXEucG5nKS4g0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQv9GD0YLRjCDQuiDRhNCw0LnQu9Cw0Lwg0LjQt9C+0LHRgNCw0LbQtdC90LjQuSBPVE9CTy4g0JLRgtC+0YDQvtC5INCy0LDRgNC40LDQvdGCINCyINGD0LrQsNC30LDQvdC40Lgg0YHRgdGL0LvQutC4INC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSjQvdCw0L/RgNC40LzQtdGALCBodHRwOi8vb3RvYm8ub3JnL2ZhcS5wbmcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDU1Mt0YbQstC10YIg0LTQu9GPINGA0LXQt9GD0LvRjNGC0LDRgtCwINCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICfQktGA0LXQvNGPINC00LvRjyDQstGL0YXQvtC00LAg0LjQtyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPIEZBUSDQv9GD0L3QutGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQutCw0YLQtdCz0L7RgNC40Y/QvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn0J/QtdGH0LDRgtGMINGB0YLQsNGC0YzQuCBGQVEg0LrQu9C40LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJ9Cn0LDRgdGC0L4g0LfQsNC00LDQstCw0LXQvNGL0LUg0LLQvtC/0YDQvtGB0Ysg0L/QviDQutC70LjQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICfQp9Cw0YHRgtC+INC30LDQtNCw0LLQsNC10LzRi9C1INCy0L7Qv9GA0L7RgdGLINC/0L4g0LrQu9C40LXQvdGC0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRINC00LvRjyDQutC70LjQtdC90YLQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfQlNC10YHRj9GC0LjRh9C90YvRhSDQt9C90LDQutC+0LIg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0LPQvtC70L7RgdC+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAn0J3QsNC30LLQsNC90LjQtSDQutCw0YLQtdCz0L7RgNC40Lgg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfQr9C30YvQuiDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOINCyINC+0LTQvdC+0Y/Qt9GL0YfQvdC+0Lwg0YDQtdC20LjQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINC30LDQs9C+0LvQvtCy0LrQvtCyLCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0L/QvtC60LDQt9GL0LLQsNC10LzRi9GFINCyINGB0YLQsNGC0YzRj9GFIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAn0J/RgNC40L7RgNC40YLQtdGCINC30LDRj9Cy0L7QuiDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn0KHRgtCw0YLRg9GBINC30LDQv9C40YHQuCBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQodGC0LDRgtGD0YEg0LfQsNGP0LLQvtC6INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0LXQuSBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Ci0LjQvyDQt9Cw0Y/QstC+0Log0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ9CX0L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L/QsNGA0LDQvNC10YLRgNCwIEFjdGlvbiDQtNC70Y8g0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRhNGA0L7QvdGC0LXQvdC00LAuINCf0LDRgNCw0LzQtdGC0YAgQWN0aW9uINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQsiDRgdC60YDQuNC/0YLQsNGFINGB0LjRgdGC0LXQvNGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQutC+0LPQtNCwINC60L3QvtC/0LrQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LTQvtGB0YLRg9C/0L3QsCDQsiDRgdCy0Y/Qt9Cw0L3QvdC+0Lwg0LLQuNC00LbQtdGC0LUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0Y3RgtC4INCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0LUgSlMg0LjQu9C4IENTUyDRhNCw0LnQu9GLOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCLCDQtNC+0LvQttC10L0g0LvQuCDQt9Cw0LPQvtC70L7QstC+0LogRkFRINC+0LHRitC10LTQuNC90Y/RgtGM0YHRjyDRgSDRgtC10LzQvtC5INGB0YLQsNGC0YzQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC20YPRgNC90LDQu9CwIEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQvtC00YPQu9GMINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdC/0LjRgdC60LAg0YHRgtCw0YLQtdC5IEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAgRkFRINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAgRkFRINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0YDQtdC30YPQu9GM0YLQsNGC0LAg0L/QvtC40YHQutCwINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LwgINC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSBGQVEgRXhwbG9yZXIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLiBVcDog0L/QvtC30LTQvdC10LUg0L3QsNCy0LXRgNGF0YMuIERvd246INC90L7QstC+0LUg0L3QsNCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQuNC90YLQtdGA0YTQtdC50YHQsCDQutC70LjQtdC90YLQsC4gVXA6INC/0L7Qt9C00L3QtdC1INC90LDQstC10YDRhdGDLiBEb3duOiDQvdC+0LLQvtC1INC90LDQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUgRkFRIEV4cGxvcmVyINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1LiBVcDog0L/QvtC30LTQvdC10LUg0L3QsNCy0LXRgNGF0YMuIERvd246INC90L7QstC+0LUg0L3QsNCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INGB0L7RgNGC0LjRgNC+0LLQutC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuIFVwOiDRgdGC0LDRgNGL0LUg0LLQstC10YDRhdGDLiBEb3duOiDQvdC+0LLRi9C1INCy0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLiBVcDog0YHRgtCw0YDRi9C1INCy0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0YvQtSDQstCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0L7QsdGJ0LXQvC/Qv9GD0LHQu9C40YfQvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuIFVwOiDRgdGC0LDRgNGL0LUg0LLQstC10YDRhdGDLiBEb3duOiDQvdC+0LLRi9C1INCy0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LDRgtGA0LjQsdGD0YIgRkFRINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQv9C+0LrQsNC30LAg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC40YHQutC+0LLQvtCz0L4g0LfQsNC/0YDQvtGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0LXRgNC10YfQtdC90Ywg0LjQvdGE0L7RgNC80LDRhtC40Lgg0LLQutC70Y7Rh9Cw0LXQvNC+0Lkg0LIg0LfQsNGP0LLQutGDINC40LcgRkFRLiAiRnVsbCBGQVEiINCy0LrQu9GO0YfQsNC10YIg0YLQutC10YHRgiwg0LLQu9C+0LbQtdC90LjRjyDQuCDQstGB0YLRgNC+0LXQvdC90YvQtSDQuNC30L7QsdGA0LDQttC10L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINCyINCU0LDQudC00LbQtdGB0YLQtS4gIkxpbWl0IiDQt9Cw0LTQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uICJHcm91cCIg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC00L7RgdGC0YPQv9CwINC6INC00LDQvdC90YvQvCDQvNC+0LTRg9C70Y8gKNC90LDQv9GA0LjQvNC10YAsIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4g0LzQvtC00YPQu9GMINC70LjQsdC+INCy0LrQu9GO0YfQtdC9INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDQu9C40LHQviDQsNCz0LXQvdGCLCDQv9GA0Lgg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0LgsINC80L7QttC10YIg0LXQs9C+INCy0LrQu9GO0YfQuNGC0Ywg0LLRgNGD0YfQvdGD0Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C10YDQtdGH0LXQvdGMINC60L7Qu9C+0L3QvtC6LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0LIg0J7QsdC30L7RgNC1IEZBUS4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC/0L7RgNGP0LTQvtC6INC60L7Qu9C+0L3QvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C10YDQtdGH0LXQvdGMINC60L7Qu9C+0L3QvtC6LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0LIg0JjRgdGC0L7RgNC40LggRkFRLiDQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC90LUg0LLQu9C40Y/QtdGCINC90LAg0L/QvtGA0Y/QtNC+0Log0LrQvtC70L7QvdC+0LouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QtdGA0LXRh9C10L3RjCDQutC+0LvQvtC90L7Quiwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCyIEZBUS4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC/0L7RgNGP0LTQvtC6INC60L7Qu9C+0L3QvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQs9C00LUg0LHRg9C00LXRgiDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0YHRgdGL0LvQutCwICLQktGB0YLQsNCy0LjRgtGMINC40LcgRkFRIi9cJ0luc2VydCBGQVFcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICfQntC/0YDQtdC00LXQu9C10L3QuNC1INGB0LLQvtCx0L7QtNC90YvRhSDQv9C+0LvQtdC5INGN0LvQtdC80LXQvdGC0L7QsiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ9Cj0LTQsNC70LjRgtGMINGN0YLQvtGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INCyINC+0LrQvdC1INC00L7QsdCw0LLQu9C10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L7QsdC30L7RgNCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQvtCx0LfQvtGA0LAgRkFRINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QtdGH0LDRgtC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQv9C10YfQsNGC0LggRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INCyINC+0LrQvdC1INC/0LXRh9Cw0YLQuCBGQVEg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQutGA0LDRgtC60L7Qs9C+INC+0LHQt9C+0YDQsCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQv9C+0LTRgNC+0LHQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0YHRgtCw0YLRjNC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INCyINC+0LrQvdC1INC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDRgdGC0LDRgtGM0LggRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC00YDQvtCx0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINGB0YLQsNGC0YzQuCBGQVEg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfQmNC30LzQtdC90LjRgtGMINGN0YLQvtGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINC80L3QvtCz0L7Rj9C30YvRh9C90L7RgdGC0Ywg0LIg0LzQvtC00YPQu9C1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLRjCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0L7QuNGB0LrQsCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40YUg0LrQvtC90YLQtdC60YHRgtGDINGB0YLQsNGC0LXQuSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINGE0YPQvdC60YbQuNGOINC+0YbQtdC90LrQuCDQsiDQvNC+0LTRg9C70LUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ9Ce0LHQt9C+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVgg0L7RgtCy0LXRgtGH0LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0ZBUSBBSkFYINC+0YLQstC10YLRh9C40Log0LTQu9GPIFJpY2h0ZXh0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ9Ce0LHQu9Cw0YHRgtGMIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfQntCx0LvQsNGB0YLRjCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YHRgtCw0YLRjNGOIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAn0JjRgdGC0L7RgNC40Y8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQltGD0YDQvdCw0LvQsCBGQVEg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0J7QsdC30L7RgNCwIEZBUSDQsiAiU21hbGwiINGE0L7RgNC80LDRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICfQn9C10YfQsNGC0Ywg0YHRgtCw0YLRjNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9CS0LrQu9GO0YfQuNGC0Ywg0Lgg0L3QsNGB0YLRgNC+0LjRgtGMINC80L7QtNGD0LvRjCDQv9C+0LjRgdC60LAgRkFRINC00LvRjyDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ9Cf0L7Qu9C1NCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICfQn9C+0LvQtTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICfQn9C+0LvQvdGL0LkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9CT0YDRg9C/0L/QsCDQtNC70Y8g0L7QtNC+0LHRgNC10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfQmNGB0YLQvtGA0LjRjyDRjdGC0L7Qs9C+IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn0JLQutC70Y7Rh9C40YLRjCDQstC90YPRgtGA0LXQvdC90LjQtSDQv9C+0LvRjyDQsiDQt9Cw0Y/QstC60YMsINC+0YHQvdC+0LLQsNC90L3Rg9GOINC90LAg0YHRgtCw0YLRjNC1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfQktC60LvRjtGH0LjRgtGMINC40LzRjyDQutCw0LbQtNC+0LPQviDQv9C+0LvRjyDQsiDQt9Cw0Y/QstC60YMsINC+0YHQvdC+0LLQsNC90L3Rg9GOINC90LAg0YHRgtCw0YLRjNC1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfQmNC90YLQtdGA0YTQtdC50YHRiywg0LIg0LrQvtGC0L7RgNGL0YUg0L/QsNC90LXQu9GMINCx0YvRgdGC0YDQvtCz0L4g0L/QvtC40YHQutCwINC80L7QttC10YIg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INGP0LfRi9C60LDQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ9Cb0LjQvNC40YIgINC00LvRjyDQv9C+0LjRgdC60LAg0LTQu9GPINC/0L7RgdGC0YDQvtC10L3QuNGPINGB0L/QuNGB0LrQsCDQutC+0L3RgtC10LrRgdGC0L3Ri9GFINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ9Cf0YDQuNCy0Y/Qt9Cw0YLRjCDQtNGA0YPQs9C+0Lkg0L7QsdGK0LXQutGCINC6INGN0YLQvtC80YMg0Y3Qu9C10LzQtdC90YLRgyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICfQodC/0LjRgdC+0Log0L7Rh9C10YDQtdC00LXQuSDQtNC70Y8g0LrQvtGC0L7RgNGL0YUg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9C+0LjRgdC60LAg0LrQvtC90YLQtdC60YHRgtC90YvRhSDRgdGC0LDRgtC10LkgRkFRINCy0LrQu9GO0YfQtdC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ch0L/QuNGB0L7QuiDRgtC40L/QvtCyINGB0L7RgdGC0L7Rj9C90LjQuSwg0LrQvtGC0L7RgNGL0LUg0LzQvtCz0YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQv9C40YHQvtC6INGC0LjQv9C+0LIg0YHQvtGB0YLQvtGP0L3QuNC5LCDQutC+0YLQvtGA0YvQtSDQvNC+0LPRg9GCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC/0LjRgdC+0Log0YLQuNC/0L7QsiDRgdC+0YHRgtC+0Y/QvdC40LksINC60L7RgtC+0YDRi9C1INC80L7Qs9GD0YIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGM0YHRjyDQsiDQv9GD0LHQu9C40YfQvdC+0Lwv0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0L/Rg9Cx0LvQuNGH0L3QvtCz0L4g0LjQvdGC0LXRgNGE0LXQudGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80L7QtSDQsiBGQVEgRXhwbG9yZXIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNC+0LUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzQvtC1INCyIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDQttGD0YDQvdCw0LvQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCDQt9Cw0LPQvtC70L7QstC60L7QsiDQsiDRgdGC0LDRgtGM0LUgRkFRINC/0L7QutCw0LfRi9Cy0LDQtdC80YvRhSDQsiDQvtCx0LfQvtGA0LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINC30LDQs9C+0LvQvtCy0LrQvtCyINCyINGB0YLQsNGC0YzQtSBGQVEg0L/QvtC60LDQt9GL0LLQsNC10LzRi9GFINCyINC+0LHQt9C+0YDQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QsdC30L7RgNC1IEZBUSDQsiDQv9GD0LHQu9C40YfQvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0LbRg9GA0L3QsNC70LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAn0J3QvtCy0LDRjyDRgdGC0LDRgtGM0Y8g0LIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfQndC+0LLQsNGPINGB0YLQsNGC0YzRjyBGQVEg0L/QtdGA0LXQtCDQv9GD0LHQu9C40LrQsNGG0LjQtdC5INGC0YDQtdCx0YPQtdGCINC+0LTQvtCx0YDQtdC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIgRkFRIEV4cGxvcmVyINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiAg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0L/QvtGB0LvQtdC00L3QuNGFINC40LfQvNC10L3QtdC90LjRj9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+0LfQuNGG0LjQuSDQsiDQvdC+0LLRi9GFINGB0YLQsNGC0YzRj9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+0LfQuNGG0LjQuSDQsiDRhNGD0L3QutGG0LjQuCBUb3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICfQktGL0YXQvtC00L3QvtC5INGE0LjQu9GM0YLRgCDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8gSmF2YS1zY3JpcHQg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lclRpY2tldE1lc3NhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ9Cb0LjQvNC40YIg0LTQu9GPINCy0YvQstC+0LTQsCDRgdCy0Y/Qt9Cw0L3QvdGL0YUv0LrQvtC90YLQtdC60YHRgtC90YvRhSDRgdGC0LDRgtC10LkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsgKNC90LAg0LrQvtGC0L7RgNC+0Lkg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGN0LvQtdC80LXQvdGC0YsgRkFRKSDQv9GA0Lgg0L7QsdC30L7RgNC1INC20YPRgNC90LDQu9CwIEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyAo0L3QsCDQutC+0YLQvtGA0L7QuSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0Y3Qu9C10LzQtdC90YLRiyBGQVEpINC/0YDQuCDQvtCx0LfQvtGA0LUgRkFRINCyIHNtYWxsINGE0L7RgNC80LDRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ9Cf0LXRh9Cw0YLRjCDRjdGC0L7Qs9C+IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ9Cf0LXRh9Cw0YLRjCDQv9GD0LHQu9C40YfQvdC+0Lkg0YHRgtCw0YLRjNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0L/Rg9Cx0LvQuNGH0L3QvtC5INGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLRjNC4INCyINC/0YPQsdC70LjRh9C90L7QvCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0Lkv0L/Rg9Cx0LvQuNGH0L3Ri9C5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0J7Rh9C10YDQtdC00Ywg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfQntGG0LXQvdC60Lgg0LTQu9GPINCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8uINCa0LvRjtGHINC00L7Qu9C20LXQvSDQsdGL0YLRjCDQt9Cw0LTQsNC9INCyINC/0YDQvtGG0LXQvdGC0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAn0J/QvtC40YHQuiDQsiBGQVEg0YHQvtC60YDQsNGJ0LXQvdC90YvQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICfQn9C+0LjRgdC6INCyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ9CS0YvQsdC10YDQuNGC0LUsINGB0LrQvtC70YzQutC+INGN0LvQtdC80LXQvdGC0L7QsiDQtNC+0LvQttC90L4g0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINCyINC+0LHQt9C+0YDQtSDQttGD0YDQvdCw0LvQsCDCq9Ca0YDQsNGC0LrQuNC5wrsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0JLRi9Cx0LXRgNC40YLQtSwg0YHQutC+0LvRjNC60L4g0Y3Qu9C10LzQtdC90YLQvtCyINC00L7Qu9C20L3QviDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0LIg0L7QsdC30L7RgNC1IMKr0JrRgNCw0YLQutC40LnCuyDQv9C+INGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCy0YvRgdC+0YLRgyAo0LIg0L/QuNC60YHQtdC70LDRhSkg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPIGlubGluZSBIVE1MINC/0L7Qu9C10Lkg0LIgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQstGL0YHQvtGC0YMgKNCyINC/0LjQutGB0LXQu9Cw0YUpINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyBpbmxpbmUgSFRNTCDQv9C+0LvQtdC5INCyIEN1c3RvbWVyRkFRWm9vbSAo0LggUHVibGljRkFRWm9vbSkuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQsNC60YHQuNC80LDQu9GM0L3Rg9GOINCy0YvRgdC+0YLRgyAo0LIg0L/QuNC60YHQtdC70LDRhSkg0LTQu9GPIGlubGluZSBIVE1MINC/0L7Qu9C10Lkg0LIgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNCw0LrRgdC40LzQsNC70YzQvdGD0Y4g0LLRi9GB0L7RgtGDICjQsiDQv9C40LrRgdC10LvQsNGFKSDQtNC70Y8gaW5saW5lIEhUTUwg0L/QvtC70LXQuSDQsiBDdXN0b21lckZBUVpvb20gKNC4IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQsNGC0Ywg0LrQvdC+0L/QutGDICJJbnNlcnQgRkFRIExpbmsv0JLQutC70Y7Rh9C40YLRjCDRgdGB0YvQu9C60YMg0L3QsCBGQVEiINCyIEFnZW50RkFRWm9vbVNtYWxsINC00LvRjyDQv9GD0LHQu9C40YfQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cw0YLRjCDQutC90L7Qv9C60YMgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiLyLQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRINC4INGB0LLRj9C30LDRgtGMIi/QktGB0YLQsNCy0LjRgtGMINC/0L7Qu9C90YvQuSBGQVEg0Lgg0YHQstGP0LfQsNGC0YwiINCyIEFnZW50RkFRWm9vbVNtYWxsINC00LvRjyDQv9GD0LHQu9C40YfQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC60L3QvtC/0LrRgyAi0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSEgLyAi0JLRgdGC0LDQstC40YLRjCDRgdGC0LDRgtGM0Y4gRkFRINC/0L7Qu9C90L7RgdGC0YzRjiIg0L3QsCDRjdC60YDQsNC90LUgQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0YLQsNGC0YzRjiBGQVEg0LIgSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L/Rg9GC0YwgRkFRINC00LAv0L3QtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC90LXQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3Ri9C1INGB0YLQsNGC0YzQuCDQsiDQvtCx0LfQvtGA0LUgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0L7QtNC10YDQttC40LzQvtC1INC/0L7QtNGA0LDQt9C00LXQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0L7RgdC70LXQtNC90LjQtSDQuNC30LzQtdC90LXQvdC40Y8g0LIg0YPQutCw0LfQsNC90YvRhSDQuNC90YLQtdGA0YTQtdC50YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QvtCy0YvQtSDQv9GD0L3QutGC0Ysg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNGC0YwgItC30LLQtdC30LTRiyIg0LTQu9GPINGB0YLQsNGC0LXQuSDRgSDRgNC10LnRgtC40L3Qs9C+0Lwg0YDQsNCy0L3Ri9C8INC40LvQuCDQsdC+0LvRjNGI0LUg0LfQsNC00LDQvdC90L7Qs9C+INC30LTQtdGB0Ywg0LfQvdCw0YfQtdC90LjRjyAo0YPRgdGC0LDQvdC+0LLQuNGC0LUg0LIgIjAiINC00LvRjyDQvtGC0LrQu9GO0YfQtdC90LjRjyDQv9C+0LrQsNC30LApLsKgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCBUb3AgMTAg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQvtGG0LXQvdC60YMg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRgdCy0Y/Qt9Cw0YLRjCDRgdGC0LDRgtGM0Y4gRkFRINGBINC00YDRg9Cz0LjQvCDQvtCx0YrQtdC60YLQvtC8INC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0Y3RgtC+0Lkg0YHRgtCw0YLRjNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGD0LTQsNC70LjRgtGMINGB0YLQsNGC0YzRjiBGQVEg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6INC40YHRgtC+0YDQuNC4INGB0YLQsNGC0YzQuCBGQVEg0L/RgNC4INC10LUg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YHRgtCw0YLRjNGOIEZBUSDQv9GA0Lgg0LXQtSDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDQstC10YDQvdGD0YLRjNGB0Y8g0L3QsNC30LDQtCDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0J/QtdGH0LDRgtGMINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0YHRgtCw0YLRjNC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn0KDQtdGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ9Ch0LjQvNC/0YLQvtC80YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAn0KLQvtC70YzQutC+INGC0LXQutGB0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn0K/Qt9GL0LrQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LjRgdC60L7QvNGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAgRkFRLCDQvdCw0L/RgNC40LzQtdGALCBGQVEjLCBLQiMsIE15RkFRIy4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gLSBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC30LDQtNCw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGB0LLRj9C30LDRgtGMINC+0LHRitC10LrRgiBcJ0ZBUVwnINGBINC00YDRg9Cz0LjQvCDQv9C+0LTQvtCx0L3Ri9C8INC+0LHRitC10LrRgtC+0Lwg0LjRgdC/0L7Qu9GM0LfRg9GPINGC0LjQvyDRgdCy0Y/Qt9C4IFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQt9Cw0LTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgdCy0Y/Qt9Cw0YLRjCDQvtCx0YrQtdC60YIgXCdGQVFcJyDRgSDQtNGA0YPQs9C40Lwg0L/QvtC00L7QsdC90YvQvCDQvtCx0YrQtdC60YLQvtC8INC40YHQv9C+0LvRjNC30YPRjyDRgtC40L8g0YHQstGP0LfQuCBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ct0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0LfQsNC00LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQstGP0LfQsNGC0Ywg0L7QsdGK0LXQutGCIFwnRkFRXCcg0YEg0LTRgNGD0LPQuNC80Lgg0L7QsdGK0LXQutGC0LDQvNC4INGC0LjQv9CwICLQl9Cw0Y/QstC60LAiINC40YHQv9C+0LvRjNC30YPRjyDRgtC40L8g0YHQstGP0LfQuCBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ct0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0LfQsNC00LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQstGP0LfQsNGC0Ywg0L7QsdGK0LXQutGCIFwnRkFRXCcg0YEg0LTRgNGD0LPQuNC80Lgg0L7QsdGK0LXQutGC0LDQvNC4INGC0LjQv9CwICLQl9Cw0Y/QstC60LAiINC40YHQv9C+0LvRjNC30YPRjyDRgtC40L8g0YHQstGP0LfQuCBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfQotC10LvQviDQt9Cw0Y/QstC60Lgg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLRjNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ9Ci0LXQvNCwINC30LDRj9Cy0LrQuCDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtGM0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDRj9GA0LvRi9C60LAo0LjQutC+0L3QutC4KSDQtNC70Y8g0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0Lkg0L/QsNC90LXQu9C4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn0L7RgtC60YDRi9GC0L7QtSAo0LrQu9C40LXQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ9GB0LvRg9C20LXQsdC90L7QtSAo0LDQs9C10L3RgtCw0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1ICjQstGB0LXQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAn0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0LkgKNC/0YPQsdC70LjRh9C90YvQuSknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ9CU0L7QtNCw0ZggRkFRINGH0LvQsNC90LDQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ9Ca0ZnRg9GH0L3QtSDRgNC10YfQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRmNCwINGY0LUg0L7QsdCw0LLQtdC30L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXRmtC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSBGQVEg0LrQsNGC0LXQs9C+0YDQuNGY0LDQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICfQlNC+0LTQsNGYIEZBUSDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ9Cj0YDQtdC00LggRkFRINC60LDRgtC10LPQvtGA0LjRmNGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QtNCw0Zgg0LrQsNGC0LXQs9C+0YDQuNGY0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn0JTQvtC00LDRmCDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn0KPRgNC10LTQuCDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9Cf0L7QtNC60LDRgtC10LPQvtGA0LjRmNCwINC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQnNC+0LvQuNC80L4g0LTQsCDQuNC30LDQsdC10YDQtdGC0LUg0LHQsNGAINGY0LXQtNC90YMg0LPRgNGD0L/RgyDQtNC+0LfQstC+0LvQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0LUg0L7Qv9C10YDQsNGC0LXRgNCwINC60L7RmNC1INC80L7Qs9GDINC/0YDQuNGB0YLRg9C/0LjRgtC4INGH0LvQsNC90YbQuNC80LAg0YMg0L7QstC+0Zgg0LrQsNGC0LXQs9C+0YDQuNGY0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfQkdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90L4g0LrQsNC+INC60L7QvNC10L3RgtCw0YAg0YMg0JjRgdGC0YDQsNC20LjQstCw0YfRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9CU0LAg0LvQuCDRgdGC0LLQsNGA0L3QviDQttC10LvQuNGC0LUg0LTQsCDQvtCx0YDQuNGI0LXRgtC1INC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfQndC1INC80L7QttC10YLQtSDQvtCx0YDQuNGB0LDRgtC4INC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgy4g0KPQv9C+0YLRgNC10LHRmdC10L3QsCDRmNC1INGDINCx0LDRgCDRmNC10LTQvdC+0LwgRkFRINGH0LvQsNC90LrRgyDQuC/QuNC70Lgg0ZjQtSDQvdCw0LTRgNC10ZLQtdC90LAg0L3QsNGY0LzQsNGa0LUg0ZjQtdC00L3QvtGYINC00YDRg9Cz0L7RmCDQutCw0YLQtdCz0L7RgNC40ZjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ9Ce0LLQsCDQutCw0YLQtdCz0L7RgNC40ZjQsCDRmNC1INGD0L/QvtGC0YDQtdCx0ZnQtdC90LAg0YMg0YHQu9C10LTQtdGb0LjQvCBGQVEg0YfQu9Cw0L3RhtC40LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfQntCy0LAg0LrQsNGC0LXQs9C+0YDQuNGY0LAg0ZjQtSDQvdCw0LTRgNC10ZLQtdC90LAg0YHQu9C10LTQtdGb0LjQvCDQv9C+0LTQutCw0YLQtdCz0L7RgNC40ZjQsNC80LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn0JTQsCDQu9C4INGB0YLQstCw0YDQvdC+INC20LXQu9C40YLQtSDQtNCwINC+0LHRgNC40YjQtdGC0LUg0L7QstCw0ZggRkFRINGH0LvQsNC90LDQuj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfQkdGA0LfQviDRgtGA0LDQttC10ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn0I/QvtC60LXRgNGB0LrQuCDQt9C90LDRhtC4INGB0YMg0LTQvtC30LLQvtGZ0LXQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQndCw0L/RgNC10LTQvdCwINC/0YDQtdGC0YDQsNCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNC60LDRgtC10LPQvtGA0LjRmNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUSDRh9C70LDQvdGG0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTQutCw0YLQtdCz0L7RgNC40ZjQtSDQvdC40YHRgyDQv9GA0L7QvdCw0ZLQtdC90LUuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfQmNGB0YLQvtGA0LjRmNCwINC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn0KHQsNC00YDQttCw0Zgg0LjRgdGC0L7RgNC40ZjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ9Cd0LjRgdGDINC/0YDQvtC90LDRktC10L3QuCDQv9C+0LTQsNGG0LggRkFRINC00L3QtdCy0L3QuNC60LAuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSBGQVEg0ZjQtdC30LjRhtC40LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAn0JTQvtC00LDRmCBGQVEg0ZjQtdC30LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ9Cj0YDQtdC00LggRkFRINGY0LXQt9C40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn0KPQv9C+0YLRgNC10LHQuNGC0LUg0L7QstGDINGE0YPQvdC60YbQuNGY0YMg0LDQutC+INC20LXQu9C40YLQtSDQtNCwINC60L7RgNC40YHRgtC40YLQtSDQstC40YjQtSDRmNC10LfQuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ9CU0L7QtNCw0Zgg0ZjQtdC30LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfQlNC+0LTQsNGYINCI0LXQt9C40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ9Cj0YDQtdC00Lgg0IjQtdC30LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn0JTQsCDQu9C4INC30LDQuNGB0YLQsCDQttC10LvQuNGC0LUg0LTQsCDQuNC30LHRgNC40YjQtdGC0LUg0L7QstCw0Zgg0ZjQtdC30LjQuj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAn0J3QtSDQvNC+0LbQtdGC0LUg0L7QsdGA0LjRgdCw0YLQuCDQvtCy0LDRmCDRmNC10LfQuNC6LiDQo9C/0L7RgtGA0LXQsdGZ0LXQvSDRmNC1INGDINCx0LDRgCDRmNC10LTQvdC+0LwgRkFRINGH0LvQsNC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfQntCy0LDRmCDRmNC10LfQuNC6INGY0LUg0YPQv9C+0YLRgNC10LHRmdC10L0g0YMg0YHQu9C10LTQtdGb0LjQvCBGQVEg0YfQu9Cw0L3RhtC40LzQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ9Cf0L7QtNC10YjQsNCy0LDRmtC1INC60L7QvdGC0LXQutGB0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEg0YfQu9Cw0L3QsNC60LAg0L/QviDRgdGC0YDQsNC90LgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn0J3QuNGB0YMg0L/RgNC+0L3QsNGS0LXQvdC4IEZBUSDQv9C+0LTQsNGG0LguJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICfQvtC0IDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAn0JrRmdGD0YfQvdCwINGA0LXRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn0JPQu9Cw0YHQsNGYICjQvdC/0YAg0ZjQtdC00L3QsNC60L4gMTAg0LjQu9C4INCy0LXRm9C1INC+0LQgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ9Ce0YbQtdC90LggKNC90L/RgCDRmNC10LTQvdCw0LrQviAyNSUg0LjQu9C4INCy0LXRm9C1INC+0LQgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ9Ce0LTQvtCx0YDQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00ZrQuCDRmNC1INC80LXRmtCw0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNC1INC60YDQtdC40YDQsNGa0LAgRkFRINGH0LvQsNC90LrQsCAo0L/RgNC1L9C/0L7RgdC70LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCBGQVEg0YfQu9Cw0L3QutCwICjQuNC30LzQtdGS0YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSBGQVEg0YfQu9Cw0L3QutCwICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSBGQVEg0YfQu9Cw0L3QutCwICjQuNC30LzQtdGS0YMpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUSDRgtC10LrRgdGCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRINC/0YDQtdGC0YDQsNCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfQmNC30LHQvtGAINC/0YDQvtGE0LjQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfQk9C70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn0J3QtdC80LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LfQsCDQs9C70LDRgdCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ9Ch0L/QtdGG0LjRhNC40YfQvdC4INCz0LvQsNGB0L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ9C90L/RgCDRmNC10LTQvdCw0LrQviAxMCDQuNC70Lgg0LLQtdGb0LUg0L7QtCA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn0J7RhtC10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn0J3QtdC80LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LfQsCDQvtGG0LXRmtC40LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ9Ch0L/QtdGG0LjRhNC40YfQvdCwINC+0YbQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfQvdC/0YAg0ZjQtdC00L3QsNC60L4gMjUlINC40LvQuCDQstC10ZvQtSDQvtC0IDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCBGQVEg0YfQu9Cw0L3QutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSBGQVEg0YfQu9Cw0L3QutCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUSDQuNC90YTQvtGA0LzQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ9Ce0YbQtdGa0LjQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0LvQsNGB0L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ9CT0LvQsNGB0L7QstC4INC90LjRgdGDINC/0YDQvtC90LDRktC10L3QuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9CT0LvQsNGB0L7QstC4INC90LjRgdGDINC/0YDQvtC90LDRktC10L3QuCEg0JHRg9C00LjRgtC1INC/0YDQstC4INC60L7RmNC4INGb0LUg0L7RhtC10L3QuNGC0Lgg0L7QstCw0ZggRkFRINGH0LvQsNC90LDQui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ9Cf0YDQtdGD0LfQvNC4INC/0YDQuNC70L7Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ9CU0LAg0LHQuNGB0YLQtSDQvtGC0LLQvtGA0LjQu9C4INCy0LXQt9C1INGDINGB0LvQtdC00LXRm9C40Lwg0LHQu9C+0LrQvtCy0LjQvNCwINC+0L/QuNGB0LAsINC80L7QttC00LAg0ZvQtdGC0LUg0YLRgNC10LHQsNGC0Lgg0LTQsCDQv9GA0LjRgtC40YHQvdC10YLQtSDigJ5DdHJs4oCdINC40LvQuCDigJ5DbWTigJ0g0LjQu9C4IOKAnlNoaWZ04oCdINGC0LDRgdGC0LXRgCDQtNC+0Log0LjRgdGC0L7QstGA0LXQvNC10L3QviDQutC70LjQutC90LXRgtC1INC90LAg0LLQtdC30YMgKNC30LDQstC40YHQuCDQvtC0INCy0LDRiNC10LMg0J7QoSDQuCDQv9GA0LXQs9C70LXQtNCw0YfQsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn0JrQvtC70LjQutC+INGY0LUg0LrQvtGA0LjRgdGC0LDQvSDQvtCy0LDRmCDRh9C70LDQvdCw0Lo/INCc0L7Qu9C40LzQviDQstCw0YEg0LTQsCDQtNCw0YLQtSDQstCw0YjRgyDQvtGG0LXQvdGDINC4INC/0L7QvNC+0LPQvdC10YLQtSDQv9C+0LTQuNC30LDRmtGDINC60LLQsNC70LjRgtCw0YLQsCDQsdCw0LfQtSDRh9C10YHRgtC+INC/0L7RgdGC0LDQstGZ0LDQvdC40YUg0L/QuNGC0LDRmtCwLiDQpdCy0LDQu9CwINCS0LDQvCEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn0L3QuNGY0LUg0LrQvtGA0LjRgdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn0LLRgNC70L4g0LrQvtGA0LjRgdC90L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ9CU0L7QtNCw0Zgg0L3QsNGB0LvQvtCyIEZBUSDRh9C70LDQvdC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn0KPQvdC10YHQuCBGQVEg0YLQtdC60YHRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfQo9C90LXRgdC4INC60L7QvNC/0LvQtdGC0LDQvSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn0KPQvdC10YHQuCBGQVEg0LLQtdC30YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ9Cj0L3QtdGB0LggRkFRINGC0LXQutGB0YIg0Lgg0LLQtdC30YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ9Cj0L3QtdGB0Lgg0LrQvtC80L/Qu9C10YLQsNC9IEZBUSDQuCDQstC10LfRgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ9Cd0LjRgdGDINC/0YDQvtC90LDRktC10L3QuCBGQVEg0YfQu9Cw0L3RhtC4Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJ9Ce0LLQviDQvNC+0LbQtSDQtNCwINCx0YPQtNC1INC+0LQg0L/QvtC80L7Rm9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICfQmtC+0YDQuNGB0L3QuCDRgNC10YHRg9GA0YHQuCDQt9CwINGD0L3QtdGC0Lgg0L/RgNC10LTQvNC10YIg0Lgg0YLQtdC60YHRgiDQvdC40YHRgyDQv9GA0L7QvdCw0ZLQtdC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfQl9CwINC70LjRgdGC0YMg0LrQvtGA0LjRgdC90LjRhSDRgNC10YHRg9GA0YHQsCwg0LzQvtC70LjQvNC+INGD0L3QtdGB0LjRgtC1INC/0YDQtdC00LzQtdGCINC40LvQuCDRgtC10LrRgdGCLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtGC0L/Rg9C90LAg0YLQtdC60YHRgtGD0LDQu9C90LAg0L/RgNC10YLRgNCw0LPQsCDRgyBGQVEg0YfQu9Cw0L3RhtC40LzQsCAo0L3Qv9GALiAiSm9obipuIiDQuNC70LggIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQsCDQs9C70LDRgdCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn0KHQsNC80L4gRkFRINGH0LvQsNC90YbQuCDRgdCwINCz0LvQsNGB0L7QstC40LzQsC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtCwINC+0YbQtdGa0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfQodCw0LzQviBGQVEg0YfQu9Cw0L3RhtC4INGB0LAg0L7RhtC10L3QvtC8Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn0JLRgNC10LzQtdC90YHQutCwINC+0LPRgNCw0L3QuNGH0LXRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICfQodCw0LzQviBGQVEg0YfQu9Cw0L3RhtC4INC60YDQtdC40YDQsNC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQsNC80L4gRkFRINGH0LvQsNC90YbQuCDQutGA0LXQuNGA0LDQvdC4INC40LfQvNC10ZLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICfQn9GA0L7RhNC40Lsg0L/RgNC10YLRgNCw0LPQtSDQutCw0L4g0YjQsNCx0LvQvtC9Pyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ9CR0YDQvtGYINGH0LvQsNC90LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Ci0YDQsNC20Lgg0YfQu9Cw0L3QutC1INGB0LAg0LrRmdGD0YfQvdC+0Lwg0YDQtdGH0LgnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn0IjQsNCy0L3Qvic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn0J3QsNC30LDQtCDQvdCwIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfQn9C+0YLRgNC10LHQvdCwINCy0LDQvCDRmNC1IOKAnnJ34oCdINC00L7Qt9Cy0L7Qu9CwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGY0LUg0YMg0LrQvtGY0L7RmCDQutC+0YDQuNGB0L3QuNC6INC40LzQsCDQv9GA0LjRgdGC0YPQvyDQsdC10Lcg0L7Qs9GA0LDQvdC40YfQtdGa0LAg0L3QuNGB0YMg0L/RgNC+0L3QsNGS0LXQvdC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICfQndC40ZjQtSDQv9GA0L7QvdCw0ZLQtdC9INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGY0LXQt9C40Log0Lgg0L3QtSDQvNC+0LbQtSDRgdC1INC60YDQtdC40YDQsNGC0Lgg0L3QvtCyLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ9Cf0L7RgtGA0LXQsdCw0L0g0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGY0LAg0YLRgNC10LHQsCDQtNCwINC40LzQsCDQuNC80LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfQntCy0LAg0LrQsNGC0LXQs9C+0YDQuNGY0LAg0LLQtdGbINC/0L7RgdGC0L7RmNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn0J7QstCwINC60LDRgtC10LPQvtGA0LjRmNCwINCy0LXRmyDQv9C+0YHRgtC+0ZjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIg0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0Lgg0LrQsNGC0LXQs9C+0YDQuNGY0YMgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSDQutCw0YLQtdCz0L7RgNC40ZjQsCDQsNC20YPRgNC40YDQsNC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEg0LrQsNGC0LXQs9C+0YDQuNGY0LAg0LTQvtC00LDRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfQntCx0YDQuNGI0Lgg0LrQsNGC0LXQs9C+0YDQuNGY0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ9Cd0LXQvNCw0YLQtSDQtNC+0LfQstC+0LvRgyDQt9CwINC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0LggRkFRINGH0LvQsNC90LDQuiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAn0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSAlcyDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINGY0LXRgCDQvdC40ZjQtSDQtNCw0YIg0JjQlCDQodGC0LDQstC60LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnRkFRINC40YHRgtC+0YDQuNGY0LDRgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSDQtNC90LXQstC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICfQn9C+0YLRgNC10LHQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0L7Qv9GG0LjRmNCwIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0L7Qv9GG0LjRmNCwIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3INC80L7RgNCwINC00LAg0LHRg9C00LUgSEFTSCDRgNC10YTQtdGA0LXQvdGG0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAn0J3QuNGY0LUg0L/RgNC+0L3QsNGS0LXQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwINC30LAg0L/RgNC10LPQu9C10LQgIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0IjQtdC30LjQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICfQmNC80LUg0ZjQtSDQvtCx0LDQstC10LfQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ce0LLQsNGYINGY0LXQt9C40Log0LLQtdGbINC/0L7RgdGC0L7RmNC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfQndC40ZjQtSDQsdC40LvQviDQvNC+0LPRg9Gb0LUg0L7QsdGA0LjRgdCw0YLQuCDRmNC10LfQuNC6ICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfQkNC20YPRgNC40YDQsNC9IEZBUSDRmNC10LfQuNC6ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn0JTQvtC00LDRgiBGQVEg0ZjQtdC30LjQuiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAn0J7QsdGA0LjRiNC4INGY0LXQt9C40LogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ9Cg0LXQt9GD0LvRgtCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfQn9C+0YHQu9C10LTRmtC1INCw0LbRg9GA0LjRgNCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdGQVEg0LTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ9CI0LXQt9C40YfQutC4INC+0LHRmNC10LrRgiDRgdC1INC90LUg0LzQvtC20LUg0YPRh9C40YLQsNGC0LghJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXQvNCwINGA0LXQt9GD0LvRgtCw0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSDQsdGA0L7RmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICfQn9C+0YHQu9C10LTRmtC4INGY0LUg0LzQtdGa0LDQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCBGQVEg0YHRgtCw0LLQutC1ICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwIEZBUSDRgdGC0LDQstC60LUgKNC40LfQvNC10ZLRgyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNC1INC40LfQvNC10L3QtSBGQVEg0YHRgtCw0LLQutC1ICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQuNC30LzQtdC90LUgRkFRINGB0YLQsNCy0LrQtSAo0LjQt9C80LXRktGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICfQiNC10LTQvdCw0LrQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICfQktC10ZvQtSDQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICfQiNC10LTQvdCw0LrQviDQuNC70Lgg0LLQtdGb0LUg0L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICfQnNCw0ZrQtSDQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICfQiNC10LTQvdCw0LrQviDQuNC70Lgg0LzQsNGa0LUg0L7QtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfQn9C+0YLRgNC10LHQsNC9INCY0JQg0J/QvtGZ0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9Cl0LLQsNC70LAg0L3QsCDQstCw0YjQtdC8INCz0LvQsNGB0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn0JLQtdGbINGB0YLQtSDQs9C70LDRgdCw0LvQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfQndC40ZjQtSDQuNC30LDQsdGA0LDQvdCwINC90Lgg0ZjQtdC00L3QsCDQvtGG0LXQvdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfQnNC10YXQsNC90LjQt9Cw0Lwg0LfQsCDQs9C70LDRgdCw0ZrQtSDQvdC40ZjQtSDQsNC60YLQuNCy0LjRgNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAn0J7RhtC10ZrQuNCy0LDRmtC1INCz0LvQsNGB0LDRmtCwINC90LjRmNC1INC00LXRhNC40L3QuNGB0LDQvdC+ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfQqNGC0LDQvNC/0LAgRkFRINGH0LvQsNC90LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ9Ca0YDQtdC40YDQsNC9INC40LfQvNC10ZLRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfQn9C+0YLRgNC10LHQsNC9INCY0JQg0KHRgtCw0LLQutC1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRINGH0LvQsNC90YbQuCAo0L3QvtCy0L4g0LrRgNC10LjRgNCw0L3QuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUSDRh9C70LDQvdGG0LggKNC90LXQtNCw0LLQvdC+INC80LXRmtCw0L3QuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRINGH0LvQsNC90YbQuCAo0L/RgNCy0LjRhSAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIg0KLQuNC/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdUeXBlINC80L7RgNCwINCx0LjRgtC4IExhc3RDcmVhdGUsIExhc3RDaGFuZ2Ug0LjQu9C4IFRvcDEwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ1JTUyDQtNCw0YLQvtGC0LXQutCwINC90LUg0LzQvtGb0LUg0LHQuNGC0Lgg0YHQvdC40LzRmdC10L3QsCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUSDRgtC10LrRgdGCKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0g0JrQu9C40ZjQtdC90YIgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtINCa0LvQuNGY0LXQvdGCIChGQVEg0YLQtdC60YHRgiknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g0IjQsNCy0L3QviAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtINCI0LDQstC90L4gKEZBUSDRgtC10LrRgdGCKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICfQndC10L7Qv9GF0L7QtNC90LAg0L7RhtC10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ9Cn0LvQsNC90LDQuiDRmNC1INC/0YDQsNC30LDQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00ZrQtSDQutGA0LXQuNGA0LDQvdC4IEZBUSDRh9C70LDQvdGG0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00ZrQtSDQsNC20YPRgNC40YDQsNC90LggRkFRINGH0LvQsNC90YbQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn0J3QsNGY0L/QvtC/0YPQu9Cw0YDQvdC40ZjQuNGFIDEwIEZBUSDRh9C70LDQvdCw0LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICfQotC40L8g0YHQsNC00YDQttCw0ZjQsCc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn0LjQvdGC0LXRgNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQtdC60YHRgtC10YDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9GY0LDQstC90L4nOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfQoyDRgNC10LTRgyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICfQpNC40LvRgtC10YAg0LfQsCDigJ5IVE1M4oCdINC40LfQu9Cw0Lcg0LfQsCDQtNC+0LTQsNCy0LDRmtC1INCy0LXQt9C1INC40LfQsCDQtNC10YTQuNC90LjRgdCw0L3QvtCzINC90LjQt9CwINC30L3QsNC60L7QstCwLiDQldC70LXQvNC10L3RgiDQodC70LjQutCwINC00L7Qt9Cy0L7RmdCw0LLQsCDQtNCy0LAg0L3QsNGH0LjQvdCwINGD0L3QvtGB0LAuINCf0YDQstC4INGY0LUg0L3QsNC30LjQsiDRgdC70LjQutC1ICjQvdC/0YAgZmFxLnBuZykuINGDINC+0LLQvtC8INGB0LvRg9GH0LDRmNGDINCx0LjRm9C1INC60L7RgNC40YjRm9C10L3QsCDigJ5PVE9CT+KAnSDQv9GD0YLQsNGa0LAg0LTQviDRgdC70LjQutC1LiAg0JTRgNGD0LPQsCDQvNC+0LPRg9Gb0L3QvtGB0YIg0ZjQtSDRg9C90L7RgSDQstC10LfQtSDQtNC+INGB0LvQuNC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ9CU0L7QtNCw0ZggRkFRINGH0LvQsNC90LDQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+KAnkNTU+KAnSDQsdC+0ZjQsCDQt9CwINGA0LXQt9GD0LvRgtCw0YIg0LPQu9Cw0YHQsNGa0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICfQktGA0LXQvNC1INC+0YHQu9C+0LHQsNGS0LDRmtCwINC60LXRiNCwINC30LAgRkFRINGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSDQutCw0YLQtdCz0L7RgNC40ZjQsNC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICfQo9C/0YDQsNCy0ZnQsNGa0LUg0LrQsNGC0LXQs9C+0YDQuNGY0LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn0KjRgtCw0LzQv9Cw0ZrQtSDQutC70LjRmNC10L3RgtGB0LrQvtCzIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICfQodGA0L7QtNC90LggRkFRINGH0LvQsNC90YbQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ9Ch0YDQvtC00L3QuCBGQVEg0YfQu9Cw0L3RhtC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ9CU0LXRgtCw0ZnQuCDQutC70LjRmNC10L3RgtGB0LrQvtCzIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICfQn9GA0LXRgtGA0LDQs9CwINC60LvQuNGY0LXQvdGC0YHQutC+0LMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAn0JrQu9C40ZjQtdC90YLRgdC60LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfQkdGA0L7RmCDQtNC10YbQuNC80LDQu9CwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQs9C70LDRgdCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ9Cd0LDQt9C40LIg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQsNGC0LXQs9C+0YDQuNGY0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRmNC10LfQuNC6IEZBUSDRh9C70LDQvdCw0LrQsCDRgyDRmNC10LTQvdC+0ZjQtdC30LjRh9C60L7QvCDQvdCw0YfQuNC90YMg0YDQsNC00LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdCwINC80LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCBGQVEg0YfQu9Cw0L3QutCwINC60L7RmNCwINGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQvtGA0LjRgtC10YIg0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUgRkFRINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0YHRgtCw0ZrQtSBGQVEg0YPQvdC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGB0YLQsNGa0LUg0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUgRkFRINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgtC40L8g0YLQuNC60LXRgtCwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUgRkFRINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90LAg0LLRgNC10LTQvdC+0YHRgiDQt9CwIOKAnkFjdGlvbuKAnSDQv9Cw0YDQsNC80LXRgtCw0YAg0YMg0ZjQsNCy0L3QvtC8INGE0YDQvtC90YLQtdC90LTRgy4g0J7QstCw0Zgg0L/QsNGA0LDQvNC10YLQsNGAINC60L7RgNC40YHRgtC1INGB0LrRgNC40L/RgtC1INGB0LjRgdGC0LXQvNCwLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0JDQutGG0LjRmNC1INCz0LTQtSDRmNC1INC00YPQs9C80LUg0L/QvtGB0YLQsNCy0LrQuCDQtNC+0YHRgtGD0L/QvdC+INGDINC/0L7QstC10LfQsNC90L7QvCDQs9GA0LDRhNC40YfQutC+0Lwg0LXQu9C10LzQtdC90YLRgyDQvtCx0ZjQtdC60YLQsCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvQuNC80L4g0LTQsCDQuNC80LDRgtC1INC90LAg0YPQvNGDINC00LAg0L7QstC1INCQ0LrRhtC40ZjQtSDQvNC+0YDQsNGY0YMg0LTQsCDQsdGD0LTRgyDRgNC10LPQuNGB0YLRgNC+0LLQsNC90LUg0YMg0YHQu9C10LTQtdGb0LjQvCBKUyDQuCBDU1Mg0LTQsNGC0L7RgtC10LrQsNC80LA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC00LAg0LvQuCDQvdCw0YHQu9C+0LIgRkFRINGC0YDQtdCx0LAg0LTQsCDQsdGD0LTQtSDQtNC+0LTQsNGCINC90LAg0YLQtdC80YMg0YfQu9Cw0L3QutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNC+0LTRg9C7INC/0YDQtdCz0LvQtdC00LAg0LfQsCDQvNCw0LvQuCDQv9GA0LjQutCw0LcgRkFRINC00L3QtdCy0L3QuNC60LAuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyBGQVEg0LvQuNGB0YLQtS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1IEZBUSDQv9GA0LXRgtGA0LDQt9C4IEZBUSAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMgINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUgRkFRINGDINC/0YDQtdGC0YDQsNC30LggRkFRICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUgRkFRINGDINC/0YDQtdGC0YDQsNC30LggRkFRICDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSBGQVEg0YMgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSBGQVEg0YMgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1IEZBUSDRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9GDINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQgRkFRINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0YDQtdGA0LDRgtC10YDQsC4g0JPQvtGA0LU6INC90LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQvdCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQgRkFRINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLiDQk9C+0YDQtTog0L3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INC90LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQgRkFRINGA0LXQt9GD0LvRgtCw0YLQuNC80LAgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfQsCDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuINCT0L7RgNC1OiDQvdCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0L3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCBGQVEg0YMg0YDQtdC30YPQu9GC0LDRgtC40LzQsCDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/RgNC10YDQsNGC0LXRgNCwLiDQk9C+0YDQtTog0L3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INC90LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQgRkFRINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLiDQk9C+0YDQtTog0L3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INC90LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0IEZBUSDRgyDRgNC10LfRg9C70YLQsNGC0LjQvNCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLiDQk9C+0YDQtTog0L3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INC90LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC40LrQsNC30LDQvdC4IEZBUSDQsNGC0YDQuNCx0YPRgiDQv9GA0LXRgtGA0LDQs9C1INC30LAgRkFRINC/0YDQvtC30L7RgCDQt9CwINC/0YDQtdGC0YDQsNCz0YMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC40L3RhNC+0YDQvNCw0YbQuNGY0LUg0LrQvtGY0LUg0ZvQtSDQsdC40YLQuCDRg9Cx0LDRh9C10L3QtSDRgyBGQVEg0LHQsNC30LjRgNCw0L3QuCDRgtC40LrQtdGCLiAi0JrQvtC80L/Qu9C10YLQsNC9IEZBUSIg0YPQutGZ0YPRh9GD0ZjQtSDRgtC10LrRgdGCLCDQv9GA0LjQu9C+0LPQtSDQuCDRg9C80LXRgtC90YPRgtC1INGB0LvQuNC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC30LDQtNC40L3RgdC60LUg0L/QsNGA0LDQvNC10YLRgNC1INC30LAg0LrQvtC90YLRgNC+0LvQvdGDINGC0LDQsdC70YMuICLQm9C40LzQuNGCIiDQtNC10YTQuNC90LjRiNC1INCx0YDQvtGYINC/0L7QtNGA0LXQt9GD0LzQtdCy0LDQvdC+INC/0YDQuNC60LDQt9Cw0L3QuNGFINGD0L3QvtGB0LAuICLQk9GA0YPQv9CwIiDRgdC1INC60L7RgNC40YHRgtC4INC00LAg0L7Qs9GA0LDQvdC40YfQuCDQv9GA0LjRgdGC0YPQvyDQtNC+0LTQsNGC0LrRgyAo0L3Qv9GALiDQk9GA0YPQv9CwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuItCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+IiDRg9C60LDQt9GD0ZjQtSDQvdCwINGC0L4g0LTQsCDQu9C4INGY0LUg0LTQvtC00LDRgtCw0Log0L/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0LDQutGC0LjQstC40YDQsNC9INC40LvQuCDQtNCwINGY0LUg0L/QvtGC0YDQtdCx0L3QviDQtNCwINCz0LAg0LrQvtGA0LjRgdC90LjQuiDQvNCw0L3Rg9C10LvQvdC+INCw0LrRgtC40LLQuNGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9GDLiDQntCy0LAg0L7Qv9GG0LjRmNCwINC90LXQvNCwINGD0YLQuNGG0LDRmCDQvdCwINC/0L7Qt9C40YbQuNGY0LUg0LrQvtC70L7QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyBGQVEg0LTQvdC10LLQvdC40LrRgy4g0J7QstCwINC+0L/RhtC40ZjQsCDQvdC10LzQsCDRg9GC0LjRhtCw0Zgg0L3QsCDQv9C+0LfQuNGG0LjRmNC1INC60L7Qu9C+0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyBGQVEg0L/RgNC10YLRgNCw0LfQuC4g0J7QstCwINC+0L/RhtC40ZjQsCDQvdC10LzQsCDRg9GC0LjRhtCw0Zgg0L3QsCDQv9C+0LfQuNGG0LjRmNC1INC60L7Qu9C+0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICfQlNC10YTQuNC90LjRiNC1INCz0LTQtSDRm9C1ICLQo9Cx0LDRhtC4IEZBUSIg0LLQtdC30LAg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICfQlNC10YTQuNC90LjRhtC40ZjQsCDQv9C+0ZnQsCDRgdC70L7QsdC+0LTQvdC+0LMg0YLQtdC60YHRgtCwINC30LAgRkFRINGB0YLQsNCy0LrRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn0J7QsdGA0LjRiNC4INC+0LLQsNGYIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0YLQsNC90LAg0YMg0LXQutGA0LDQvdGDINC00L7QtNCw0LLQsNGa0LAgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0LjQt9C80LXQvdC1IEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC/0YDQtdCz0LvQtdC00YMgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQv9GA0LXQs9C70LXQtNGDIEZBUSDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDRiNGC0LDQvNC/0LUgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINGI0YLQsNC80L/QtSBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDRiNGC0LDQvNC/0LUgRkFRINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQv9GA0LXRgtGA0LDQs9C1IEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0L/RgNC10YLRgNCw0LPQtSBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0L/RgNC10YLRgNCw0LPQtSBGQVEg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0L/RgNC10LPQu9C10LTRgyBGQVEg0LzQsNC70L7QsyDRhNC+0YDQvNCw0YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LXQs9C70LXQtNGDIEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LXQs9C70LXQtNGDIEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQtdCz0LvQtdC00YMgRkFRINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ9Cj0YDQtdC00Lgg0L7QstCw0ZggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCw0ZrQtSDQstC40YjQtSDRmNC10LfQuNC60LAg0L3QsCBGQVEg0LzQvtC00YPQu9GDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICfQkNC60YLQuNCy0LjRgNCwINGE0YPQvdC60YbQuNGY0YMg0YHRgNC+0LTQvdC40YUg0YfQu9Cw0L3QsNC60LAg0LfQsCDQuNC90YLQtdGA0YTQtdGY0YEg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCw0ZrQtSDQvNC10YXQsNC90LjQt9C80LAg0LfQsCDQs9C70LDRgdCw0ZrQtSDQvdCwIEZBUSDQvNC+0LTRg9C70YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn0JjRgdGC0YDQsNC20LjQstCw0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVgg0L7QtNCz0L7QstCw0YDQsNGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnRkFRIEFKQVgg0L7QtNCz0L7QstCw0YDQsNGHINC30LAgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ0ZBUSDQv9GA0L7RgdGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVEg0L/RgNC+0YHRgtC+0YAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAn0J7QsdGA0LjRiNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAn0KPRgNC10LTQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGY0LDRgiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQv9GA0LXQs9C70LXQtNCwIEZBUSDQtNC90LXQstC90LjQutCwICLQvNCw0LvQviInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQv9GA0LXQs9C70LXQtNCwIEZBUSAi0LzQsNC70L4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICfQqNGC0LDQvNC/0LDRmCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfQnNC+0LTRg9C7INGA0YPRgtC10YDQsCBGQVEg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ9Cf0L7RmdC1NCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICfQn9C+0ZnQtTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdL0L7QvNC/0LvQtdGC0LDQvSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0JPRgNGD0L/QsCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ9CY0YHRgtC+0YDQuNGY0LDRgiDQvtCy0L7QsyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ9Cj0LrRmdGD0YfQuCDQuNC90YLQtdGA0L3QsCDQv9C+0ZnQsCDRgyBGQVEg0LHQsNC30LjRgNCw0L0g0YLQuNC60LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfQo9C60ZnRg9GH0Lgg0L3QsNC30LjQsiDRgdCy0LDQutC+0LMg0L/QvtGZ0LAg0YMgRkFRINCx0LDQt9C40YDQsNC9INGC0LjQutC10YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn0JjQvdGC0LXRgNGE0LXRmNGBINC90LAg0LrQvtC8INGC0YDQtdCx0LAg0L/RgNC40LrQsNC30LDRgtC4INCx0YDQt9GDINC/0YDQtdGC0YDQsNCz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICfQlNC90LXQstC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstGZ0LDRmtC1INGY0LXQt9C40YbQuNC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICfQo9C/0YDQsNCy0ZnQsNGa0LUg0ZjQtdC30LjRhtC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LPQtdC90LXRgNC40YHQsNGa0LUg0LvQuNGB0YLQtSDQutGZ0YPRh9C90LjRhSDRgNC10YfQuCBGQVEg0YfQu9Cw0L3QsNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ9Cf0L7QstC10LbQuCDQtNGA0YPQs9C4INC+0LHRmNC10LrQsNGCINGB0LAg0L7QstC+0Lwg0YHRgtCw0LLQutC+0LwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAn0JvQuNGB0YLQsCDQuNC80LXQvdCwINGA0LXQtNC+0LLQsCDQt9CwINC60L7RmNC1INGY0LUg0YTRg9C90YbQuNGY0LAg0YHRgNC+0LTQvdC40YUg0YfQu9Cw0L3QsNC60LAg0LDQutGC0LjQstC40YDQsNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cb0LjRgdGC0LAg0YLQuNC/0L7QstCwINGB0YLQsNGa0LAg0LrQvtGY0Lgg0YHQtSDQvNC+0LPRgyDQutC+0YDQuNGB0YLQuNGC0Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQm9C40YHRgtCwINGC0LjQv9C+0LLQsCDRgdGC0LDRmtCwINC60L7RmNC4INGB0LUg0LzQvtCz0YMg0LrQvtGA0LjRgdGC0LjRgtC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQm9C40YHRgtCwINGC0LjQv9C+0LLQsCDRgdGC0LDRmtCwINC60L7RmNC4INGB0LUg0LzQvtCz0YMg0LrQvtGA0LjRgdGC0LjRgtC4INGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCDQvNC+0LTRg9C70LAg0LfQsCDRg9GH0LjRgtCw0LLQsNGa0LUg0LfQsCDRmNCw0LLQvdC4INC40L3RgtC10YDRhNC10ZjRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINGA0LXQt9GD0LvRgtCw0YLRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9CwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINGA0LXQt9GD0LvRgtCw0YLRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9CwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0LAg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQtNC90LXQstC90LjQutGDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYIEZBUSDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyBGQVEg0YfQu9Cw0L3QutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyBGQVEg0YfQu9Cw0L3QutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LAg0LTRg9C20LjQvdCwINC90LDRgdC70L7QstCwINGDIEZBUSDRh9C70LDQvdC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMgRkFRINC40YHRgtGA0LDQttC40LLQsNGH0YMg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAg0YMgRkFRINGH0LvQsNC90LrRgyDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyBGQVEg0L/RgNC10YLRgNCw0LfQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyBGQVEg0YfQu9Cw0L3QutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQt9C4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAg0YMgRkFRINGH0LvQsNC90LrRgyDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyBGQVEg0L/RgNC10YLRgNCw0LfQuCDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAg0YMgRkFRINGH0LvQsNC90LrRgyDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyBGQVEg0LTQvdC10LLQvdC40LrRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGB0LDRmtC1IEhUTUwgT3BlblNlYXJjaCDQv9GA0L7RhNC40LvQsCDQt9CwINC60YDQsNGC0LrRgyBGQVEg0L/RgNC10YLRgNCw0LPRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YHQsNGa0LUgSFRNTCBPcGVuU2VhcmNoINC/0YDQvtGE0LjQu9CwINC30LAg0LrRgNCw0YLQutGDIEZBUSDQv9GA0LXRgtGA0LDQs9GDINGDINGY0LDQstC90L7QvCDQv9GA0L7RhNC40LvRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGB0LDRmtC1IEhUTUwgT3BlblNlYXJjaCDQv9GA0L7RhNC40LvQsCDQt9CwINC60YDQsNGC0LrRgyBGQVEg0L/RgNC10YLRgNCw0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ9Cd0L7QstC4IEZBUSDRh9C70LDQvdCw0LouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ9Cd0L7QstC4IEZBUSDRh9C70LDQvdGG0Lgg0YLRgNC10LHQsNGY0YMg0LHQuNGC0Lgg0L7QtNC+0LHRgNC10L3QuCDQv9GA0LUg0L7QsdGY0LDQstGZ0LjQstCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYIEZBUSDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9GDINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INC90LAg0YHQstCw0LrQvtGYINGB0YLRgNCw0L3QuCDRgNC10LfRg9C70YLQsNGC0LAg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INC90LAg0YHQstCw0LrQvtGYINGB0YLRgNCw0L3QuCDRgNC10LfRg9C70YLQsNGC0LAg0L/RgNC10YLRgNCw0LPQtSDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn0JHRgNC+0Zgg0L/RgNC40LrQsNC30LDQvdC40YUg0YHRgtCw0LLQutC4INGDINC/0L7RgdC70LXQtNGa0LjQvCDQuNC30LzQtdC90LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ9CR0YDQvtGYINC/0YDQuNC60LDQt9Cw0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDQv9C+0YHQu9C10LTRmtC1INC60YDQtdC40YDQsNC90LjQvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfQkdGA0L7RmCDQv9GA0LjQutCw0LfQsNC90LjRhSDRgdGC0LDQstC60Lgg0YMgItC/0YDQstC40YUgMTAiIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CY0LfQu9Cw0LfQvdC4INGE0LjQu9GC0LXRgCDQt9CwINGD0LHQsNGG0LjQstCw0ZrQtSBKYXZhU2NyaXB0INGDIEN1c3RvbWVyVGlja2V0TWVzc2FnZSDQtdC60YDQsNC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQsdGA0L7RmNCwINC/0YDQuNC60LDQt9Cw0L3QuNGFINGB0YDQvtC00L3QuNGFIEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INGB0YLRgNCw0L3QuNGG0LAgKNC90LAg0LrQvtGY0LjQvNCwINGB0YMgRkFRINGB0YLQsNCy0LrQtSDQv9GA0LjQutCw0LfQsNC90LUpINC90LAg0LzQsNC70L7QvCDQv9GA0LjQutCw0LfRgyDQv9GA0LXQs9C70LXQtNCwIEZBUSDQtNC90LXQstC90LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INGB0YLRgNCw0L3QuNGG0LAgKNC90LAg0LrQvtGY0LjQvNCwINGB0YMg0LLQuNC00ZnQuNCy0LUgRkFRINGB0YLQsNCy0LrQtSkg0YHQvNCw0ZrQtdC90L7QsyDQv9GA0LXQs9C70LXQtNCwIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICfQqNGC0LDQvNC/0LDRmCDQvtCy0LDRmCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICfQqNGC0LDQvNC/0LDRmtC1INGY0LDQstC90LjRhSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICfQlNC10YLQsNGZ0Lgg0ZjQsNCy0L3QuNGFIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAn0J/RgNC10YLRgNCw0LPQsCDRmNCw0LLQvdC40YUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ9CI0LDQstC90LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQoNC10LQg0LfQsCDQvtC00L7QsdGA0LDQstCw0ZrQtSBGQVEg0YfQu9Cw0L3QsNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAn0J7RhtC10L3QtSDQt9CwINCz0LvQsNGB0LDRmtC1LiDQmtGZ0YPRhyDQvNC+0YDQsCDQsdC40YLQuCDRgyDQv9GA0L7RhtC10L3RgtC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ9ChJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfQn9GA0LXRgtGA0LDQttC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJ9Cc0LDQu9CwIEZBUSDQv9GA0LXRgtGA0LDQs9CwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ9Cf0YDQtdGC0YDQsNCz0LAgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0JjQt9Cw0LHQtdGA0LjRgtC1INC60L7Qu9C40LrQviDRm9C1INGB0YLQsNCy0LrQuCDQsdC40YLQuCDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQv9GA0LjQutCw0LfQsNC90L4g0YMg0L/RgNC10LPQu9C10LTRgyDQtNC90LXQstC90LjQutCwINC80LDQu9C+0LMg0YTQvtGA0LzQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0JjQt9Cw0LHQtdGA0LjRgtC1INC60L7Qu9C40LrQviDRm9C1INGB0YLQsNCy0LrQuCDQsdC40YLQuCDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQv9GA0LjQutCw0LfQsNC90L4g0YMg0L/RgNC10LPQu9C10LTRgyDQvNCw0LvQvtCzINGE0L7RgNC80LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICfQn9C+0LTQtdGB0Lgg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90YMg0LLQuNGB0LjQvdGDICjRgyDQv9C40LrRgdC10LvQuNC80LApINC40L3Qu9C40L3QtSBIVE1MINC/0L7RmdCwINGDIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfQn9C+0LTQtdGB0Lgg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90YMg0LLQuNGB0LjQvdGDICjRgyDQv9C40LrRgdC10LvQuNC80LApINC40L3Qu9C40L3QtSBIVE1MINC/0L7RmdCwINGDIEN1c3RvbWVyRkFRWm9vbSAo0LggUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ9Cf0L7QtNC10YHQuCDQvNCw0LrRgdC40LzQsNC70L3RgyDQstC40YHQuNC90YMgKNGDINC/0LjQutGB0LXQu9C40LzQsCkg0LjQvdC70LjQvdC1IEhUTUwg0L/QvtGZ0LAg0YMgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ9Cf0L7QtNC10YHQuCDQvNCw0LrRgdC40LzQsNC70L3RgyDQstC40YHQuNC90YMgKNGDINC/0LjQutGB0LXQu9C40LzQsCkg0LjQvdC70LjQvdC1IEhUTUwg0L/QvtGZ0LAg0YMgQ3VzdG9tZXJGQVFab29tICjQuCBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbQuCAi0KPQsdCw0YbQuCBGQVEg0LLQtdC30YMiINC00YPQs9C80LUg0YMgQWdlbnRGQVFab29tU21hbGwg0LfQsCDRmNCw0LLQvdC1IEZBUSDQsNGA0YLQuNC60LvQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20LggItCj0LHQsNGG0LggRkFRINGC0LXQutGB0YIg0Lgg0LLQtdC30YMiIC8gItCj0LHQsNGG0Lgg0YbQtdC+IEZBUSDQuCDQstC10LfRgyDQtNGD0LPQvNC1INGDIEFnZW50RkFRWm9vbVNtYWxsINC30LAg0ZjQsNCy0L3QtSBGQVEg0LDRgNGC0LjQutC70LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbQuCAi0KPQsdCw0YbQuCBGQVEg0YLQtdC60YHRgiIgLyAi0KPQsdCw0YbQuCDRhtC10L4gRkFRIiDQtNGD0LPQvNC1INGDIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfQn9GA0LjQutCw0LcgRkFRINGH0LvQsNC90LrQsCDQutCw0L4gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn0J/RgNC40LrQsNC20Lgg0L/Rg9GC0LDRmtGDINC00L4gRkFRINC00LAv0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0Lcg0L3QtdC40YHQv9GA0LLQvdC40YUg0YHRgtCw0LLQutC4INGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICfQn9GA0LjQutCw0LbQuCDRgdGC0LDQstC60LUg0YHRg9Cx0LrQsNGC0LXQs9C+0YDQuNGY0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0YDQuNC60LDQttC4INC30LDQtNGa0LUg0L/RgNC+0LzQtdGa0LXQvdC1INGB0YLQsNCy0LrQtSDRgyDQtNC10YTQuNC90LjRgdCw0L3QuNC8INC40L3RgtC10YDRhNC10ZjRgdC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0YDQuNC60LDQttC4INC30LDQtNGa0LUg0LrRgNC10LjRgNCw0L3QtSDRgdGC0LDQstC60LUg0YMg0LTQtdGE0LjQvdC40YHQsNC90LjQvCDQuNC90YLQtdGA0YTQtdGY0YHQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20Lgg0LfQstC10LfQtNC40YbQtSDQt9CwINGH0LvQsNC90LrQtSDRgdCwINGY0LXQtNC90LDQutC+0Lwg0LjQu9C4INCx0L7RmdC+0Lwg0L7RhtC10L3QvtC8INC+0LQg0LTQtdGE0LjQvdC40YHQsNC90LUg0LLRgNC10LTQvdC+0YHRgtC4ICjQv9C+0YHRgtCw0LLQuNGC0LUg0LLRgNC10LTQvdC+0YHRgiBcJzBcJyDQt9CwINC00LXQsNC60YLQuNCy0LjRgNCw0ZrQtSDQv9GA0LjQutCw0LfQsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9GA0LjQutCw0LbQuCDQv9GA0LLQuNGFIDEwINGB0YLQsNCy0LrQuCDRgyDQtNC10YTQuNC90LjRgdCw0L3QuNC8INC40L3RgtC10YDRhNC10ZjRgdC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0YDQuNC60LDQttC4INCz0LvQsNGB0LDRmtC1INGDINC00LXRhNC40L3QuNGB0LDQvdC40Lwg0LjQvdGC0LXRgNGE0LXRmNGB0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LrQvtGY0LAg0L7QvNC+0LPRg9Gb0LDQstCwINC/0L7QstC10LfQuNCy0LDRmtC1IEZBUSDRgdCwINC00YDRg9Cz0LjQvCDQvtCx0ZjQtdC60YLQvtC8INGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YLQvtCzIEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQutC+0ZjQsCDQvtC80L7Qs9GD0ZvQsNCy0LAg0LHRgNC40YHQsNGa0LUgRkFRINGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9GA0LjRgdGC0YPQvyBGQVEg0LjRgdGC0L7RgNC40ZjQsNGC0YMg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LjQt9C80LXQvdGDIEZBUSDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INGDINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyBGQVEg0YMgINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0YjRgtCw0LzQv9Cw0ZrQtSBGQVEg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn0KDQtdGI0LXRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICfQodC40LzQv9GC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICfQodCw0LzQviDRgtC10LrRgdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGY0LXQt9C40YbQuCDQt9CwINGB0YDQvtC00L3QtSBGQVEg0YfQu9Cw0L3QutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwIEZBUSwg0L3Qv9GALiBGQVEjLCBLQiMsIE15RkFRIy4g0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0ZjQtSBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfQntCy0L4g0L/QvtC00LXRiNCw0LLQsNGa0LUg0LTQtdGE0LjQvdC40YjQtSDQtNCwIEZBUSDQvtCx0ZjQtdC60YIg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QstC10LbQtSDRgdCwINC00YDRg9Cz0LjQvCBGQVEg0L7QsdGY0LXQutGC0LjQvNCwINC60L7RgNC40YHRgtC10ZvQuCDQstC10LfRgyDRgtC40L/QsCBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ce0LLQviDQv9C+0LTQtdGI0LDQstCw0ZrQtSDQtNC10YTQuNC90LjRiNC1INC00LAgRkFRINC+0LHRmNC10Lph0YIg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QstC10LbQtSDRgdCwINC00YDRg9Cz0LjQvCBGQVEg0L7QsdGY0LXQutGC0LjQvNCwINC60L7RgNC40YHRgtC10ZvQuCDQstC10LfRgyDRgtC40L/QsCBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ce0LLQviDQv9C+0LTQtdGI0LDQstCw0ZrQtSDQtNC10YTQuNC90LjRiNC1INC00LAgRkFRINC+0LHRmNC10LrRgiDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtCy0LXQttC1INGB0LAg0LTRgNGD0LPQuNC8INGC0LjQutC10YIg0L7QsdGY0LXQutGC0LjQvNCwINC60L7RgNC40YHRgtC10ZvQuCDQstC10LfRgyDRgtC40L/QsCBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ce0LLQviDQv9C+0LTQtdGI0LDQstCw0ZrQtSDQtNC10YTQuNC90LjRiNC1INC00LAgRkFRINC+0LHRmNC10LrRgiDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtCy0LXQttC1INGB0LAg0LTRgNGD0LPQuNC8INGC0LjQutC10YIg0L7QsdGY0LXQutGC0LjQvNCwINC60L7RgNC40YHRgtC10ZvQuCDQstC10LfRgyDRgtC40L/QsCBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfQodCw0LTRgNC20LDRmCDRgtC40LrQtdGC0LAg0LfQsCDQvtC00L7QsdGA0LDQstCw0ZrQtSBGQVEg0YfQu9Cw0L3QsNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfQn9GA0LXQtNC80LXRgiDRgtC40LrQtdGC0LAg0LfQsCDQvtC00L7QsdGA0LDQstCw0ZrQtSBGQVEg0YfQu9Cw0L3QsNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICfQodGC0LDQstC60LAg0LDQu9Cw0YLQvdC1INC70LjQvdC40ZjQtSDQt9CwINGB0LrRgNCw0ZvQtdC90LjRhtGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn0LXQutGB0YLQtdGA0L3QviAo0LrQu9C40ZjQtdC90YIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICfQuNC90YLQtdGA0L3QviAo0L7Qv9C10YDQsNGC0LXRgCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn0ZjQsNCy0L3QviAo0YHQstC1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICfRmNCw0LLQvdC+ICjRmNCw0LLQvdC+KSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0RvZGFqIEZBUSDEjWxhbmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnS2xqdcSNbmUgcmXEjWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWphIGplIG9iYXZlem5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ09kb2JyZW5qZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBGQVEga2F0ZWdvcmlqYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdEb2RhaiBGQVEga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ1VyZWRpIEZBUSBrYXRlZ29yaWp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0RvZGFqIGthdGVnb3JpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnRG9kYWoga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnVXJlZGkga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1BvZGthdGVnb3JpamEgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdNb2xpbW8gZGEgaXphYmVyZXRlIGJhciBqZWRudSBncnVwdSBkb3p2b2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cGUgb3BlcmF0ZXJhIGtvamUgbW9ndSBwcmlzdHVwaXRpIMSNbGFuY2ltYSB1IG92b2oga2F0ZWdvcmlqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0JpxIdlIHByaWthemFubyBrYW8ga29tZW50YXIgdSBJc3RyYcW+aXZhxI11Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnRGEgbGkgc3R2YXJubyDFvmVsaXRlIGRhIG9icmnFoWV0ZSBvdnUga2F0ZWdvcmlqdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOZSBtb8W+ZXRlIG9icmlzYXRpIG92dSBrYXRlZ29yaWp1LiBVcG90cmVibGplbmEgamUgdSBiYXIgamVkbm9tIEZBUSDEjWxhbmt1IGkvaWxpIGplIG5hZHJlxJFlbmEgbmFqbWFuamUgamVkbm9qIGRydWdvaiBrYXRlZ29yaWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnT3ZhIGthdGVnb3JpamEgamUgdXBvdHJlYmxqZW5hIHUgc2xlZGXEh2ltIEZBUSDEjWxhbmNpbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnT3ZhIGthdGVnb3JpamEgamUgbmFkcmXEkWVuYSBzbGVkZcSHaW0gcG9ka2F0ZWdvcmlqYW1hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0RhIGxpIHN0dmFybm8gxb5lbGl0ZSBkYSBvYnJpxaFldGUgb3ZhaiBGQVEgxI1sYW5haz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgcHJldHJhxb5pdmHEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCcnpvIHRyYcW+ZW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnRMW+b2tlcnNraSB6bmFjaSBzdSBkb3p2b2xqZW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdOYXByZWRuYSBwcmV0cmFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnUG9ka2F0ZWdvcmlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVEgxI1sYW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1BvZGthdGVnb3JpamUgbmlzdSBwcm9uYcSRZW5lLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSXN0b3JpamEgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnU2FkcsW+YWogaXN0b3JpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgcG9kYWNpIEZBUSBkbmV2bmlrYS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnVXByYXZsamFuamUgRkFRIGplemljaW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdEb2RhaiBGQVEgamV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICdVcmVkaSBGQVEgamV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnVXBvdHJlYml0ZSBvdnUgZnVua2NpanUgYWtvIMW+ZWxpdGUgZGEga29yaXN0aXRlIHZpxaFlIGplemlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnRG9kYWogamV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnRG9kYWogSmV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1VyZWRpIEplemlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdEYSBsaSB6YWlzdGEgxb5lbGl0ZSBkYSBpemJyacWhZXRlIG92YWogamV6aWs/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ05lIG1vxb5ldGUgb2JyaXNhdGkgb3ZhaiBqZXppay4gVXBvdHJlYmxqZW4gamUgdSBiYXIgamVkbm9tIEZBUSDEjWxhbmt1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ092YWogamV6aWsgamUgdXBvdHJlYmxqZW4gdSBzbGVkZcSHaW0gRkFRIMSNbGFuY2ltYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1BvZGXFoWF2YW5qZSBrb250ZWtzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnRkFRIMSNbGFuYWthIHBvIHN0cmFuaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgRkFRIHBvZGFjaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ29kIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnS2xqdcSNbmEgcmXEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnR2xhc2FqIChucHIgamVkbmFrbyAxMCBpbGkgdmXEh2Ugb2QgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ09jZW5pIChucHIgamVkbmFrbyAyNSUgaWxpIHZlxIdlIG9kIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdPZG9icmVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQb3NsZWRuamkgamUgbWVuamFvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVnJlbWUga3JlaXJhbmphIEZBUSDEjWxhbmthIChwcmUvcG9zbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSBGQVEgxI1sYW5rYSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBwcm9tZW5lIEZBUSDEjWxhbmthIChwcmUvcG9zbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1ZyZW1lIHByb21lbmUgRkFRIMSNbGFua2EgKGl6bWXEkXUpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUSB0ZWtzdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBwcmV0cmFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ0l6Ym9yIHByb2ZpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ0dsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ05lbWEgcG9kZcWhYXZhbmphIHphIGdsYXNhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnU3BlY2lmacSNbmkgZ2xhc292aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICducHIgamVkbmFrbyAxMCBpbGkgdmXEh2Ugb2QgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ09jZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdOZW1hIHBvZGXFoWF2YW5qYSB6YSBvY2Vuaml2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnU3BlY2lmacSNbmEgb2NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICducHIgamVkbmFrbyAyNSUgaWxpIHZlxIdlIG9kIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSBGQVEgxI1sYW5rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ1ZyZW1lIHByb21lbmUgRkFRIMSNbGFua2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ09jZW5qaXZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnR2xhc292aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdHbGFzb3ZpIG5pc3UgcHJvbmHEkWVuaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0dsYXNvdmkgbmlzdSBwcm9uYcSRZW5pISBCdWRpdGUgcHJ2aSBrb2ppIMSHZSBvY2VuaXRpIG92YWogRkFRIMSNbGFuYWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdQcmV1em1pIHByaWxvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ0RhIGJpc3RlIG90dm9yaWxpIHZlemUgdSBzbGVkZcSHaW0gYmxva292aW1hIG9waXNhLCBtb8W+ZGEgxIdldGUgdHJlYmF0aSBkYSBwcml0aXNuZXRlIOKAnkN0cmzigJ0gaWxpIOKAnkNtZOKAnSBpbGkg4oCeU2hpZnTigJ0gdGFzdGVyIGRvayBpc3RvdnJlbWVubyBrbGlrbmV0ZSBuYSB2ZXp1ICh6YXZpc2kgb2QgdmHFoWVnIE9TIGkgcHJlZ2xlZGHEjWEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0tvbGlrbyBqZSBrb3Jpc3RhbiBvdmFqIMSNbGFuYWs/IE1vbGltbyB2YXMgZGEgZGF0ZSB2YcWhdSBvY2VudSBpIHBvbW9nbmV0ZSBwb2RpemFuanUga3ZhbGl0YXRhIGJhemUgxI1lc3RvIHBvc3RhdmxqYW5paCBwaXRhbmphLiBIdmFsYSBWYW0hICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25pamUga29yaXNubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2cmxvIGtvcmlzbm8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0RvZGFqIG5hc2xvdiBGQVEgxI1sYW5rdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdVbmVzaSBGQVEgdGVrc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnVW5lc2kga29tcGxldGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdVbmVzaSBGQVEgdmV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnVW5lc2kgRkFRIHRla3N0IGkgdmV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnVW5lc2kga29tcGxldGFuIEZBUSBpIHZlenUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgRkFRIMSNbGFuY2kuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnT3ZvIG1vxb5lIGRhIGJ1ZGUgb2QgcG9tb8SHaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnS29yaXNuaSByZXN1cnNpIHphIHVuZXRpIHByZWRtZXQgaSB0ZWtzdCBuaXN1IHByb25hxJFlbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdaYSBsaXN0dSBrb3Jpc25paCByZXN1cnNhLCBtb2xpbW8gdW5lc2l0ZSBwcmVkbWV0IGlsaSB0ZWtzdC4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1BvdHB1bmEgdGVrc3R1YWxuYSBwcmV0cmFnYSB1IEZBUSDEjWxhbmNpbWEgKG5wci4gIkpvaG4qbiIgaWxpICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnT2dyYW5pxI1lbmphIGdsYXNhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdTYW1vIEZBUSDEjWxhbmNpIHNhIGdsYXNvdmltYS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ09ncmFuacSNZW5qYSBvY2Vuaml2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdTYW1vIEZBUSDEjWxhbmNpIHNhIG9jZW5vbS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1ZyZW1lbnNrYSBvZ3JhbmnEjWVuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ1NhbW8gRkFRIMSNbGFuY2kga3JlaXJhbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnU2FtbyBGQVEgxI1sYW5jaSBrcmVpcmFuaSBpem1lxJF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbCBwcmV0cmFnZSBrYW8gxaFhYmxvbj8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdCcm9qIMSNbGFua2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdUcmHFvmkgxI1sYW5rZSBzYSBrbGp1xI1ub20gcmXEjWknOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnSmF2bm8nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ05hemFkIG5hIEZBUSBwcmV0cmHFvml2YcSNJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdQb3RyZWJuYSB2YW0gamUg4oCecnfigJ0gZG96dm9sYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0thdGVnb3JpamUgdSBrb2pvaiBrb3Jpc25payBpbWEgcHJpc3R1cCBiZXogb2dyYW5pxI1lbmphIG5pc3UgcHJvbmHEkWVuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTmlqZSBwcm9uYcSRZW4gcG9kcmF6dW1ldmFuaSBqZXppayBpIG5lIG1vxb5lIHNlIGtyZWlyYXRpIG5vdi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdQb3RyZWJhbiBJRCBLYXRlZ29yaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaWphIHRyZWJhIGRhIGltYSBpbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdPdmEga2F0ZWdvcmlqYSB2ZcSHIHBvc3RvamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdPdmEga2F0ZWdvcmlqYSB2ZcSHIHBvc3RvamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgS2F0ZWdvcmlqZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkga2F0ZWdvcmlqdSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRIGthdGVnb3JpamEgYcW+dXJpcmFuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBrYXRlZ29yaWphIGRvZGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnT2JyacWhaSBrYXRlZ29yaWp1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IElEIFN0YXZrZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUga2F0ZWdvcmlqdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkgRkFRIMSNbGFuYWsgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0lEIEthdGVnb3JpamUgJXMgamUgbmVpc3ByYXZhbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIGplciBuaWplIGRhdCBJRCBTdGF2a2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnRkFRIGlzdG9yaWphdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBkbmV2bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ1BvdHJlYm5hIGtvbmZpZ3VyYWNpb25hIG9wY2lqYSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICdLb25maWd1cmFjaW9uYSBvcGNpamEgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbW9yYSBkYSBidWRlIEhBU0ggcmVmZXJlbmNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ05pamUgcHJvbmHEkWVuYSBrb25maWd1cmFjaW9uYSBzdGF2a2EgemEgcHJlZ2xlZCAiJXMiISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBJRCBKZXppa2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0ltZSBqZSBvYmF2ZXpubyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdPdmFqIGplemlrIHZlxIcgcG9zdG9qaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkgamV6aWsgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0HFvnVyaXJhbiBGQVEgamV6aWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdEb2RhdCBGQVEgamV6aWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ09icmnFoWkgamV6aWsgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ1JlenVsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnUG9zbGVkbmplIGHFvnVyaXJhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSBkaW5hbWnEjWthIHBvbGphJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnSmV6acSNa2kgb2JqZWt0IHNlIG5lIG1vxb5lIHXEjWl0YXRpISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW1hIHJlenVsdGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSBicm9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1Bvc2xlZG5qaSBqZSBtZW5qYW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBrcmVpcmFuamEgRkFRIHN0YXZrZSAocHJlL3Bvc2xlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdWcmVtZSBrcmVpcmFuamEgRkFRIHN0YXZrZSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBpem1lbmUgRkFRIHN0YXZrZSAocHJlL3Bvc2xlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdWcmVtZSBpem1lbmUgRkFRIHN0YXZrZSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnSmVkbmFrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdWZcSHZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnSmVkbmFrbyBpbGkgdmXEh2Ugb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTWFuamUgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0plZG5ha28gaWxpIG1hbmplIG9kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ1BvdHJlYmFuIElEIFBvbGphISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdIdmFsYSBuYSB2YcWhZW0gZ2xhc3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVmXEhyBzdGUgZ2xhc2FsaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaWplIGl6YWJyYW5hIG5pIGplZG5hIG9jZW5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdNZWhhbml6YW0gemEgZ2xhc2FuamUgbmlqZSBha3RpdmlyYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnT2NlbmppdmFuamUgZ2xhc2FuamEgbmlqZSBkZWZpbmlzYW5vISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfFoHRhbXBhIEZBUSDEjWxhbmthJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnS3JlaXJhbiBpem1lxJF1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ1BvdHJlYmFuIElEIFN0YXZrZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUSDEjWxhbmNpIChub3ZvIGtyZWlyYW5pKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRIMSNbGFuY2kgKG5lZGF2bm8gbWVuamFuaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRIMSNbGFuY2kgKHBydmloIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IFRpcCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnVHlwZSBtb3JhIGJpdGkgTGFzdENyZWF0ZSwgTGFzdENoYW5nZSBpbGkgVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnUlNTIGRhdG90ZWthIG5lIG1vxIdlIGJpdGkgc25pbWxqZW5hISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoRkFRIHRla3N0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gS2xpamVudCAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gS2xpamVudCAoRkFRIHRla3N0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBKYXZubyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEphdm5vIChGQVEgdGVrc3QpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ05lb3Bob2RuYSBvY2VuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ8SMbGFuYWsgamUgcHJhemFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdQb3NsZWRuamUga3JlaXJhbmkgRkFRIMSNbGFuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnUG9zbGVkbmplIGHFvnVyaXJhbmkgRkFRIMSNbGFuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ05hanBvcHVsYXJuaWppaCAxMCBGQVEgxI1sYW5ha2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwIHNhZHLFvmFqYSc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ2phdm5vJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnVSByZWR1JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0ZpbHRlciB6YSDigJ5IVE1M4oCdIGl6bGF6IHphIGRvZGF2YW5qZSB2ZXplIGl6YSBkZWZpbmlzYW5vZyBuaXphIHpuYWtvdmEuIEVsZW1lbnQgU2xpa2EgZG96dm9samF2YSBkdmEgbmHEjWluYSB1bm9zYS4gUHJ2aSBqZSBuYXppdiBzbGlrZSAobnByIGZhcS5wbmcpLiB1IG92b20gc2x1xI1hanUgYmnEh2Uga29yacWhxIdlbmEg4oCeT1RPQk/igJ0gcHV0YW5qYSBkbyBzbGlrZS4gIERydWdhIG1vZ3XEh25vc3QgamUgdW5vcyB2ZXplIGRvIHNsaWtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdEb2RhaiBGQVEgxI1sYW5hayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+KAnkNTU+KAnSBib2phIHphIHJlenVsdGF0IGdsYXNhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnVnJlbWUgb3Nsb2JhxJFhbmphIGtlxaFhIHphIEZBUSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBrYXRlZ29yaWphbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICdVcHJhdmxqYW5qZSBrYXRlZ29yaWphbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICfFoHRhbXBhbmplIGtsaWplbnRza29nIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICdTcm9kbmkgRkFRIMSNbGFuY2kgdSBpbnRlcmZlanN1IGtsaWplbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ1Nyb2RuaSBGQVEgxI1sYW5jaSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ0RldGFsamkga2xpamVudHNrb2cgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ1ByZXRyYWdhIGtsaWplbnRza29nIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0tsaWplbnRza2kgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdCcm9qIGRlY2ltYWxhIHUgcmV6dWx0YXR1IGdsYXNhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTmF6aXYgcG9kcmF6dW1ldmFuZSBrYXRlZ29yaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnUG9kcmF6dW1ldmFuaSBqZXppayBGQVEgxI1sYW5ha2EgdSBqZWRub2plemnEjWtvbSBuYcSNaW51IHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmEgbWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgRkFRIMSNbGFua2Ega29qYSDEh2UgYml0aSBwcmlrYXphbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcHJpb3JpdGV0IHRpa2V0YSB6YSBvZG9icmF2YW5qZSBGQVEgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdQb2RyYXp1bWV2YW5vIHN0YW5qZSBGQVEgdW5vc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdQb2RyYXp1bWV2YW5vIHN0YW5qZSB0aWtldGEgemEgb2RvYnJhdmFuamUgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdQb2RyYXp1bWV2YW5pIHRpcCB0aWtldGEgemEgb2RvYnJhdmFuamUgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuYSB2cmVkbm9zdCB6YSDigJ5BY3Rpb27igJ0gcGFyYW1ldGFyIHUgamF2bm9tIGZyb250ZW5kdS4gT3ZhaiBwYXJhbWV0YXIga29yaXN0ZSBza3JpcHRlIHNpc3RlbWEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIEFrY2lqZSBnZGUgamUgZHVnbWUgcG9zdGF2a2kgZG9zdHVwbm8gdSBwb3ZlemFub20gZ3JhZmnEjWtvbSBlbGVtZW50dSBvYmpla3RhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE1vbGltbyBkYSBpbWF0ZSBuYSB1bXUgZGEgb3ZlIEFrY2lqZSBtb3JhanUgZGEgYnVkdSByZWdpc3Ryb3ZhbmUgdSBzbGVkZcSHaW0gSlMgaSBDU1MgZGF0b3Rla2FtYTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgaSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnT2RyZcSRdWplIGRhIGxpIG5hc2xvdiBGQVEgdHJlYmEgZGEgYnVkZSBkb2RhdCBuYSB0ZW11IMSNbGFua2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbW9kdWwgcHJlZ2xlZGEgemEgbWFsaSBwcmlrYXogRkFRIGRuZXZuaWthLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIG1vZHVsIHByZWdsZWRhIHphIG1hbGkgcHJpa2F6IEZBUSBsaXN0ZS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHphIHNvcnRpcmFuamUgRkFRIHByZXRyYXppIEZBUSAgdSBpbnRlcmZlanN1ICBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHphIHNvcnRpcmFuamUgRkFRIHUgcHJldHJhemkgRkFRICB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIEZBUSB1IHByZXRyYXppIEZBUSAgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHphIHNvcnRpcmFuamUgRkFRIHUgRkFRIHByZXRyYcW+aXZhxI11IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIEZBUSB1IEZBUSBwcmV0cmHFvml2YcSNdSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgemEgc29ydGlyYW5qZSBGQVEgdSBGQVEgcHJldHJhxb5pdmHEjXUgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSByZWRvc2xlZCBGQVEgdSByZXp1bHRhdGltYSBGQVEgcHJldHJhxb5pdmHEjWEgdSBpbnRlcmZlanN1IG9wcmVyYXRlcmEuIEdvcmU6IG5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogbmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgRkFRIHUgcmV6dWx0YXRpbWEgRkFRIHByZXRyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4gR29yZTogbmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBuYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgRkFRIHJlenVsdGF0aW1hIEZBUSBwcmV0cmHFvml2YcSNYSB1IGphdm5vbSBpbnRlcmZlanN1LiBHb3JlOiBuYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IG5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSByZWRvc2xlZCBGQVEgdSByZXp1bHRhdGltYSBwcmV0cmFnZSB1IGludGVyZmVqc3Ugb3ByZXJhdGVyYS4gR29yZTogbmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBuYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgRkFRIHUgcmV6dWx0YXRpbWEgcHJldHJhZ2UgdSBpbnRlcmZlanN1IGtsaWplbnRhLiBHb3JlOiBuYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IG5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgRkFRIHUgcmV6dWx0YXRpbWEgcHJldHJhZ2UgdSBqYXZub20gaW50ZXJmZWpzdS4gR29yZTogbmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBuYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBwcmlrYXphbmkgRkFRIGF0cmlidXQgcHJldHJhZ2UgemEgRkFRIHByb3pvciB6YSBwcmV0cmFndS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBpbmZvcm1hY2lqZSBrb2plIMSHZSBiaXRpIHViYcSNZW5lIHUgRkFRIGJhemlyYW5pIHRpa2V0LiAiS29tcGxldGFuIEZBUSIgdWtsanXEjXVqZSB0ZWtzdCwgcHJpbG9nZSBpIHVtZXRudXRlIHNsaWtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG96YWRpbnNrZSBwYXJhbWV0cmUgemEga29udHJvbG51IHRhYmx1LiAiTGltaXQiIGRlZmluacWhZSBicm9qIHBvZHJlenVtZXZhbm8gcHJpa2F6YW5paCB1bm9zYS4gIkdydXBhIiBzZSBrb3Jpc3RpIGRhIG9ncmFuacSNaSBwcmlzdHVwIGRvZGF0a3UgKG5wci4gR3J1cGE6IGFkbWluO2dyb3VwMTtncm91cDI7KS4iUG9kcmF6dW1ldmFubyIgdWthenVqZSBuYSB0byBkYSBsaSBqZSBkb2RhdGFrIHBvZHJhenVtZXZhbm8gYWt0aXZpcmFuIGlsaSBkYSBqZSBwb3RyZWJubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUgdSBGQVEgcHJldHJhxb5pdmHEjXUuIE92YSBvcGNpamEgbmVtYSB1dGljYWogbmEgcG96aWNpamUga29sb25hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgRkFRIGRuZXZuaWt1LiBPdmEgb3BjaWphIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgRkFRIHByZXRyYXppLiBPdmEgb3BjaWphIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmnFoWUgZ2RlIMSHZSAiVWJhY2kgRkFRIiB2ZXphIGJpdGkgcHJpa2F6YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljaWphIHBvbGphIHNsb2JvZG5vZyB0ZWtzdGEgemEgRkFRIHN0YXZrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnT2JyacWhaSBvdmFqIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F0YW5hIHUgZWtyYW51IGRvZGF2YW5qYSBGQVEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgaXptZW5lIEZBUSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBwcmVnbGVkdSBGQVEgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgcHJlZ2xlZHUgRkFRIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSDFoXRhbXBlIEZBUSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgxaF0YW1wZSBGQVEgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IMWhdGFtcGUgRkFRIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgcHJldHJhZ2UgRkFRIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgcHJldHJhZ2UgRkFRIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgcHJldHJhZ2UgRkFRIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBwcmVnbGVkdSBGQVEgbWFsb2cgZm9ybWF0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGRldGFsam5vbSBwcmVnbGVkdSBGQVEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBkZXRhbGpub20gcHJlZ2xlZHUgRkFRIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZGV0YWxqbm9tIHByZWdsZWR1IEZBUSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnVXJlZGkgb3ZhaiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGl2aXJhbmplIHZpxaFlIGplemlrYSBuYSBGQVEgbW9kdWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICdBa3RpdmlyYSBmdW5rY2lqdSBzcm9kbmloIMSNbGFuYWthIHphIGludGVyZmVqcyBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpdmlyYW5qZSBtZWhhbml6bWEgemEgZ2xhc2FuamUgbmEgRkFRIG1vZHVsdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdJc3RyYcW+aXZhxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVggb2Rnb3ZhcmHEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0ZBUSBBSkFYIG9kZ292YXJhxI0gemEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ0ZBUSBwcm9zdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0ZBUSBwcm9zdG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ09icmnFoWkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdVcmVkaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ0lzdG9yaWphdCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUgcHJlZ2xlZGEgRkFRIGRuZXZuaWthICJtYWxvIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ09ncmFuacSNZW5qZSBwcmVnbGVkYSBGQVEgIm1hbG8iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICfFoHRhbXBhaiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNb2R1bCBydXRlcmEgRkFRIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ1BvbGplNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdQb2xqZTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdLb21wbGV0YW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBhIHphIG9kb2JyYXZhbmplIEZBUSDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0lzdG9yaWphdCBvdm9nIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnVWtsanXEjWkgaW50ZXJuYSBwb2xqYSB1IEZBUSBiYXppcmFuIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1VrbGp1xI1pIG5heml2IHN2YWtvZyBwb2xqYSB1IEZBUSBiYXppcmFuIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmVqcyBuYSBrb20gdHJlYmEgcHJpa2F6YXRpIGJyenUgcHJldHJhZ3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdEbmV2bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBqZXppY2ltYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ1VwcmF2bGphbmplIGplemljaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ09ncmFuacSNZW5qZSBwcmV0cmFnZSB6YSBnZW5lcmlzYW5qZSBsaXN0ZSBrbGp1xI1uaWggcmXEjWkgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdQb3Zlxb5pIGRydWdpIG9iamVrYXQgc2Egb3ZvbSBzdGF2a29tIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0xpc3RhIGltZW5hIHJlZG92YSB6YSBrb2plIGplIGZ1bmNpamEgc3JvZG5paCDEjWxhbmFrYSBha3RpdmlyYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSB0aXBvdmEgc3RhbmphIGtvamkgc2UgbW9ndSBrb3Jpc3RpdGkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgdGlwb3ZhIHN0YW5qYSBrb2ppIHNlIG1vZ3Uga29yaXN0aXRpIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIHRpcG92YSBzdGFuamEga29qaSBzZSBtb2d1IGtvcmlzdGl0aSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cmFjaWphIG1vZHVsYSB6YSB1xI1pdGF2YW5qZSB6YSBqYXZuaSBpbnRlcmZlanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiBGQVEgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgRkFRIHByZXRyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiBGQVEgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgRkFRIHByZXRyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiBGQVEgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgRkFRIHByZXRyYcW+aXZhxI1hIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIGRuZXZuaWt1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuaSBicm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IHJlenVsdGF0dSBwcmV0cmFnZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiBGQVEgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgcHJldHJhZ2UgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IHByZXRyYWdlIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSBGQVEgxI1sYW5rdSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBwcmV0cmHFvml2YcSNdSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIHUgRkFRIMSNbGFua3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSBGQVEgcHJldHJhxb5pdmHEjXUgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IEZBUSDEjWxhbmt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIGlzdHJhxb5pdmHEjXUgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSBGQVEgxI1sYW5rdSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBwcmV0cmF6aSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IEZBUSDEjWxhbmt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIHByZXRyYXppIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIHUgRkFRIMSNbGFua3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSBGQVEgcHJldHJhemkgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIHUgRkFRIMSNbGFua3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSBGQVEgZG5ldm5pa3UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB6YSBnZW5lcmlzYW5qZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsYSB6YSBrcmF0a3UgRkFRIHByZXRyYWd1IHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgemEgZ2VuZXJpc2FuamUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGEgemEga3JhdGt1IEZBUSBwcmV0cmFndSB1IGphdm5vbSBwcm9maWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICdNb2R1bCB6YSBnZW5lcmlzYW5qZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsYSB6YSBrcmF0a3UgRkFRIHByZXRyYWd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnTm92aSBGQVEgxI1sYW5hay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92aSBGQVEgxI1sYW5jaSB0cmViYWp1IGJpdGkgb2RvYnJlbmkgcHJlIG9iamF2bGppdmFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIHByZXRyYcW+aXZhxI11IHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIHByZXRyYcW+aXZhxI11IHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQnJvaiBwcmlrYXphbmloIHN0YXZraSB1IHBvc2xlZG5qaW0gaXptZW5hbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQnJvaiBwcmlrYXphbmloIHN0YXZraSB1IHBvc2xlZG5qZSBrcmVpcmFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQnJvaiBwcmlrYXphbmloIHN0YXZraSB1ICJwcnZpaCAxMCIgLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnSXpsYXpuaSBmaWx0ZXIgemEgdWJhY2l2YW5qZSBKYXZhU2NyaXB0IHUgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIGVrcmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdPZ3JhbmnEjWVuamUgYnJvamEgcHJpa2F6YW5paCBzcm9kbmloIEZBUSDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJpIHN0cmFuaWNhIChuYSBrb2ppbWEgc3UgRkFRIHN0YXZrZSBwcmlrYXphbmUpIG5hIG1hbG9tIHByaWthenUgcHJlZ2xlZGEgRkFRIGRuZXZuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJpIHN0cmFuaWNhIChuYSBrb2ppbWEgc3UgdmlkbGppdmUgRkFRIHN0YXZrZSkgc21hbmplbm9nIHByZWdsZWRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICfFoHRhbXBhaiBvdmFqIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ8WgdGFtcGFuamUgamF2bmloIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ0RldGFsamkgamF2bmloIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnUHJldHJhZ2EgamF2bmloIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdKYXZuaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1JlZCB6YSBvZG9icmF2YW5qZSBGQVEgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnT2NlbmUgemEgZ2xhc2FuamUuIEtsanXEjSBtb3JhIGJpdGkgdSBwcm9jZW50aW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUHJldHJhxb5pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJ01hbGEgRkFRIHByZXRyYWdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ1ByZXRyYWdhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0l6YWJlcml0ZSBrb2xpa28gxIdlIHN0YXZraSBiaXRpIHBvZHJhenVtZXZhbm8gcHJpa2F6YW5vIHUgcHJlZ2xlZHUgZG5ldm5pa2EgbWFsb2cgZm9ybWF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdJemFiZXJpdGUga29saWtvIMSHZSBzdGF2a2kgYml0aSBwb2RyYXp1bWV2YW5vIHByaWthemFubyB1IHByZWdsZWR1IG1hbG9nIGZvcm1hdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ1BvZGVzaSBwb2RyYXp1bWV2YW51IHZpc2ludSAodSBwaWtzZWxpbWEpIGlubGluZSBIVE1MIHBvbGphIHUgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1BvZGVzaSBwb2RyYXp1bWV2YW51IHZpc2ludSAodSBwaWtzZWxpbWEpIGlubGluZSBIVE1MIHBvbGphIHUgQ3VzdG9tZXJGQVFab29tIChpIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdQb2Rlc2kgbWFrc2ltYWxudSB2aXNpbnUgKHUgcGlrc2VsaW1hKSBpbmxpbmUgSFRNTCBwb2xqYSB1IEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdQb2Rlc2kgbWFrc2ltYWxudSB2aXNpbnUgKHUgcGlrc2VsaW1hKSBpbmxpbmUgSFRNTCBwb2xqYSB1IEN1c3RvbWVyRkFRWm9vbSAoaSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlrYcW+aSAiVWJhY2kgRkFRIHZlenUiIGR1Z21lIHUgQWdlbnRGQVFab29tU21hbGwgemEgamF2bmUgRkFRIGFydGlrbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaWthxb5pICJVYmFjaSBGQVEgdGVrc3QgaSB2ZXp1IiAvICJVYmFjaSBjZW8gRkFRIGkgdmV6dSBkdWdtZSB1IEFnZW50RkFRWm9vbVNtYWxsIHphIGphdm5lIEZBUSBhcnRpa2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnUHJpa2HFvmkgIlViYWNpIEZBUSB0ZWtzdCIgLyAiVWJhY2kgY2VvIEZBUSIgZHVnbWUgdSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnUHJpa2F6IEZBUSDEjWxhbmthIGthbyBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdQcmlrYcW+aSBwdXRhbmp1IGRvIEZBUSBkYS9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXogbmVpc3Bydm5paCBzdGF2a2kgdSByZXp1bHRhdGltYSBGQVEgcHJldHJhxb5pdmHEjWEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1ByaWthxb5pIHN0YXZrZSBzdWJrYXRlZ29yaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdQcmlrYcW+aSB6YWRuamUgcHJvbWVuamVuZSBzdGF2a2UgdSBkZWZpbmlzYW5pbSBpbnRlcmZlanNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdQcmlrYcW+aSB6YWRuamUga3JlaXJhbmUgc3RhdmtlIHUgZGVmaW5pc2FuaW0gaW50ZXJmZWpzaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ1ByaWthxb5pIHp2ZXpkaWNlIHphIMSNbGFua2Ugc2EgamVkbmFrb20gaWxpIGJvbGpvbSBvY2Vub20gb2QgZGVmaW5pc2FuZSB2cmVkbm9zdGkgKHBvc3Rhdml0ZSB2cmVkbm9zdCBcJzBcJyB6YSBkZWFrdGl2aXJhbmplIHByaWthemEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUHJpa2HFvmkgcHJ2aWggMTAgc3RhdmtpIHUgZGVmaW5pc2FuaW0gaW50ZXJmZWpzaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUHJpa2HFvmkgZ2xhc2FuamUgdSBkZWZpbmlzYW5pbSBpbnRlcmZlanNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUga29qYSBvbW9ndcSHYXZhIHBvdmV6aXZhbmplIEZBUSBzYSBkcnVnaW0gb2JqZWt0b20gdSBkZXRhbGpub20gcHJpa2F6dSB0b2cgRkFRIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUga29qYSBvbW9ndcSHYXZhIGJyaXNhbmplIEZBUSB1IGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgcHJpc3R1cCBGQVEgaXN0b3JpamF0dSB1IGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBpem1lbnUgRkFRIHUgZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHBvdnJhdGFrIHUgZGV0YWxqbmkgcHJpa2F6IEZBUSB1ICBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSDFoXRhbXBhbmplIEZBUSB1IGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnUmXFoWVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1NpbXB0b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnU2FtbyB0ZWtzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdQb2RyYXp1bWV2YW5pIGplemljaSB6YSBzcm9kbmUgRkFRIMSNbGFua2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgemEgRkFRLCBucHIuIEZBUSMsIEtCIywgTXlGQVEjLiBQb2RyYXp1bWV2YW5vIGplIEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ092byBwb2RlxaFhdmFuamUgZGVmaW5pxaFlIGRhIEZBUSBvYmpla3QgbW/FvmUgZGEgc2UgcG92ZcW+ZSBzYSBkcnVnaW0gRkFRIG9iamVrdGltYSBrb3Jpc3RlxIdpIHZlenUgdGlwYSBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ092byBwb2RlxaFhdmFuamUgZGVmaW5pxaFlIGRhIEZBUSBvYmpla2F0IG1vxb5lIGRhIHNlIHBvdmXFvmUgc2EgZHJ1Z2ltIEZBUSBvYmpla3RpbWEga29yaXN0ZcSHaSB2ZXp1IHRpcGEgXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdPdm8gcG9kZcWhYXZhbmplIGRlZmluacWhZSBkYSBGQVEgb2JqZWt0IG1vxb5lIGRhIHNlIHBvdmXFvmUgc2EgZHJ1Z2ltIHRpa2V0IG9iamVrdGltYSBrb3Jpc3RlxIdpIHZlenUgdGlwYSBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ092byBwb2RlxaFhdmFuamUgZGVmaW5pxaFlIGRhIEZBUSBvYmpla3QgbW/FvmUgZGEgc2UgcG92ZcW+ZSBzYSBkcnVnaW0gdGlrZXQgb2JqZWt0aW1hIGtvcmlzdGXEh2kgdmV6dSB0aXBhIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1NhZHLFvmFqIHRpa2V0YSB6YSBvZG9icmF2YW5qZSBGQVEgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdQcmVkbWV0IHRpa2V0YSB6YSBvZG9icmF2YW5qZSBGQVEgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdTdGF2a2EgYWxhdG5lIGxpbmlqZSB6YSBza3JhxIdlbmljdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2Vrc3Rlcm5vIChrbGlqZW50KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAob3BlcmF0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ2phdm5vIChzdmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ2phdm5vIChqYXZubyknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdTa2FwYSBGQVEgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ055Y2tlbG9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0VuIGthdGVnb3JpIGtyw6R2cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2Rrw6RubmFuZGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIGthdGVnb3JpaGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdMw6RnZyB0aWxsIEZBUS1rYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ1JlZGlnZXJhIEZBUS1rYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdTa2FwYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdTa2FwYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnUmVkaWdlcmEga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIHRpbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdWw6RubGlnZW4gdsOkbGogbWluc3QgZW4gcsOkdHRpZ2hldHNncnVwcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQtZ3J1cHBlciBtZWQgw6V0a29tc3QgdGlsbCBhcnRpa2xhcm5hIGkgZGVubmEga2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdWaXNhcyBzb20ga29tbWVudGFyIGkgVXRmb3Jza2FyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IGRlbm5hIGthdGVnb3JpPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0R1IGthbiBpbnRlIHRhIGJvcnQgZGVubmEga2F0ZWdvcmluLiBEZXQgYW52w6RuZHMgYXYgbWluc3QgZW4gRkFRLWFydGlrZWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGVubmEga2F0ZWdvcmkgYW52w6RuZHMgYXYgZsO2bGphbmRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdEZW5uYSBrYXRlZ29yaSDDpHIgZsO2csOkbGRlciBmw7ZyIGbDtmxqYW5kZSB1bmRlcmthdGVncm9pZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZW5uYSBGQVEtYXJ0aWtlbD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtdXRmb3Jza2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTbmFiYnPDtmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0pva2VydGVja2VuIMOkciB0aWxsw6V0bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0F2YW5jZXJhZCBzw7ZrbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0luZ2EgdW5kZXJrYXRlZ29yaWVyIGhpdHRhZGVzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWsgZsO2cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpa2lubmVow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVGlkcHVua3QgZsO2ciBza2FwYW5kZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEZXQgZmlubnMgaW5nZW4gZGF0YSBpIEZBUS1sb2dnYm9rZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIHNwcsOla2hhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnTMOkZ2cgdGlsbCBGQVEtc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnUmVkaWdlcmEgRkFRLXNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdBbnbDpG5kIGRlbiBow6RyIGZ1bmt0aW9uZW4gb20gZHUgdmlsbCBhcmJldGEgbWVkIGZsZXJhIHNwcsOlay4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0zDpGdnIHRpbGwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0zDpGdnIHRpbGwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdSZWRpZ2VyYSBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZpbGwgZHUgdmVya2xpZ2VuIHRhIGJvcnQgZGV0dGEgc3Byw6VrPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdEdSBrYW4gaW50ZSB0YSBib3J0IGRldHRhIHNwcsOlay4gRGV0IGFudsOkbmRzIGkgbWluc3QgZW4gRkFRLWFydGlrZWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV0dGEgc3Byw6VrIGFudsOkbmRzIGF2IGbDtmxqYW5kZSBGQVEtYXJ0aWtsYXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBbnBhc3NhIHZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUS1hcnRpa2xhciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdJbmdlbiBGQVEtaW5mb3JtYXRpb24gaGl0dGFkZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdhdiA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ055Y2tlbG9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnUsO2c3RlciAoZXguIGxpa2EgbWVkIDEwIGVsbGVyIGZsZXIgw6RuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdCZXR5ZyAoZXguIGxpa2EgbWVkIDI1JSBlbGxlciBtZXIgw6RuIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdHb2Rrw6RuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTZW5hc3Qgw6RuZHJhZCBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUS1BcnRpa2VsIFNrYXBhZCBUaWQgKGbDtnJlL2VmdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEtQXJ0aWtlbCBTa2FwYWQgVGlkIChtZWxsYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEFydGlrZWwgw4RuZHJhZCBUaWQgKGbDtnJlL2VmdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEtQXJ0aWtlbCDDhG5kcmFkIFRpZCAobWVsbGFuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtRnVsbHRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdGQVEgc8O2ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbHZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnUsO2c3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdJbmdhIHLDtnN0aW5zdMOkbGxuaW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdTcGVjaWZpa2EgcsO2c3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdlLmcuIExpa2EgbWVkIDEwIGVsbGVyIFN0w7ZycmXDhG4gNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0JldHlnc8OkdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ0luZ2EgYmV0eWdzaW5zdMOkbGxuaW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ1NwZWNpZmlrdCBiZXR5Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2UuZy4gTGlrYSBtZWQgMjUlIGVsbGVyIFN0w7ZycmXDhG4gNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRkFRLUFydGlrZWwgU2thcGFkIFRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0ZBUSBhcnRpa2VsIMOkbmRyaW5nc3RpZHB1bmt0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXR5Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1LDtnN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnSW5nYSByw7ZzdGVyIGZ1bm5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnSW5nYSByw7ZzdGVyIGZ1bm5hISBCbGkgZGVuIGbDtnJzdGEgYXR0IGJldHlnc8OkdHRhIGRlbm5hIEZBUS1hcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTGFkZGEgbmVyIGJpbGFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ0bDtnIgYXR0IMO2cHBuYSBsw6Rua2FyIGkgZsO2bGphbmRlIGJlc2tyaXZuaW5nc2Jsb2NrIGJlaMO2dmVyIGR1IGthbnNrZSB0cnlja2EgPEN0cmw+IGVsbGVyIDxDbWQ+IGVsbGVyIDxTaGlmdD4gbWVkYW4gZHUga2xpY2thciBww6UgbMOkbmtlbiAoYmVyb2VuZGUgcMOlIHZpbGtlbiB3ZWJibMOkc2FyZSBlbGxlciBvcGVyYXRpdnN5c3RlbSBkdSBoYXIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0h1ciBoasOkbHBzYW0gdmFyIGRlbiBow6RyIGFydGlrZWxuPyBWw6RubGlnZW4gZ2Ugb3NzIGRpdHQgYmV0eWcgb2NoIGhqw6RscCBvc3MgZsO2cmLDpHR0cmEgRkFRLWRhdGFiYXNlbi4gVGFjayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpbnRlIGhqw6RscHNhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2w6RsZGlndCBoasOkbHBzYW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0zDpGdnIHRpbGwgRkFRLXRpdGVsbiB0aWxsIGFydGlrZWxucyDDpG1uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdLbGlzdHJhIGluIEZBUS10ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0tsaXN0cmEgaW4gZnVsbHN0w6RuZGlnIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdLbGlzdHJhIGluIGzDpG5rIHRpbGwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdLbGlzdHJhIGluIEZBUS10ZXh0ICYgbMOkbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0tsaXN0cmEgaW4gZnVsbHN0w6RuZGlnIEZBUSAmIGzDpG5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnSW5nYSBGQVEgYXJ0aWtsYXIgZnVubmEuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnRGVzc2EgYXJ0aWtsYXIga2FuIHZhcmEgYW52w6RuZGJhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ0hpdHRhZGUgaW5nYSBhbnbDpG5kYmFyYSBhcnRpa2xhciBmw7ZyIGRldHRhIMOkbW5ldCBvY2ggdGV4dGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdTa3JpdiBldHQgw6RtbmUgZWxsZXIgdGV4dCBmw7ZyIGF0dCBmw6UgZW4gbGlzdGEgw7Z2ZXIgaGrDpGxwZnVsbGEgYXJ0aWtsYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0Z1bGx0ZXh0LXPDtmsgaSBGQVEtYXJ0aWtsYXIgKGUuIGcuICJKb2huKm4iIGVsbGVyICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUsO2c3QtcmVzdHJpa3Rpb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnRW5kYXN0IEZBUSBhcnRpa2xhciBtZWQgcsO2c3Rlci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JldHlncy1yZXN0cmlrdGlvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0VuZGFzdCBGQVEgYXJ0aWtsYXIgbWVkIGJldHlnLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnVGlkc3Jlc3RyaWt0aW9uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ0VuZGFzdCBGQVEgYXJ0aWtsYXIgc2thcGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdFbmRhc3QgRkFRIGFydGlrbGFyIHNrYXBhZGUgbWVsbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1PDtmstcHJvZmlsIHNvbSBtYWxsPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ0FydGlrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7ZrIGVmdGVyIGFydGlrbGFyIG1lZCBueWNrZWxvcmQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnT2ZmZW50bGlnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdUaWxsYmFrYSB0aWxsIEZBUS11dGZvcnNrYXJlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnRHUgYmVow7Z2ZXIgcnctYmVow7ZyaWdoZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0luZ2Ega2F0ZWdvcmllciBoaXR0YWRlcyBkw6RyIGFudsOkbmRhcmVuIGhhciBsw6RzL3Nrcml2LXLDpHR0aWdoZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdTdGFuZGFyZC1zcHLDpWsgc2FrbmFzIG9jaCBueXR0IGthbiBlaiBza2FwYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdLYXRlZ29yaS1JRCBrcsOkdnMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VuIGthdGVnb3JpIGJlaMO2dmVyIGV0dCBuYW1uISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGVubmEga2F0ZWdvcmkgZmlubnMgcmVkYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGVubmEga2F0ZWdvcmkgZmlubnMgcmVkYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgw4RyZW5kZUlEIMOkciBhbmdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdTeXN0ZW1ldCBrdW5kZSBpbnRlIHRhIGJvcnQga2F0ZWdvcmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUS1rYXRlZ29yaSB1cHBkYXRlcmFkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRLWthdGVnb3JpIHRpbGxhZ2QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1RhIGJvcnQga2F0ZWdvcmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgSXRlbUlEIMOkciBhbmdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ0R1IHNha25hciBiZWjDtnJpZ2hldCBmw7ZyIGRlbiBow6RyIGthdGVnb3JpbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnS3VuZGUgaW50ZSB0YSBib3J0IEZBUS1hcnRpa2VsbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnS2F0ZWdvcmlJRDp0ICVzIMOkciBvZ2lsdGlndC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUS1oaXN0b3Jpayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUS1sb2dnYm9rZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmFtbiBrcsOkdnMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGV0dGEgc3Byw6VrIGZpbm5zIHJlZGFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFRLXNwcsOlayB1cHBkYXRlcmF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRLXNwcsOlayBza2FwYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1RhIGJvcnQgc3Byw6VrICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1NlbmFzdCB1cHBkYXRlcmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSBEeW5hbWlza2EgRsOkbHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEtbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1NlbmFzdCDDpG5kcmFkIGF2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRLUFydGlrZWwgU2thcGFkIFRpZCAoZsO2cmUvZWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUS1BcnRpa2VsIFNrYXBhZCBUaWQgKG1lbGxhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWtlbCDDhG5kcmFkIFRpZCAoZsO2cmUvZWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUS1BcnRpa2VsIMOEbmRyYWQgVGlkIChtZWxsYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGFjayBmw7ZyIGRpbiByw7ZzdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdEdSBoYXIgcmVkYW4gcsO2c3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdJbmdldCBiZXR5ZyBzYXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnRkFRLWFydGlrZWwgdXRza3JpZnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdTa2FwYXQgbWVsbGFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLWFydGlrbGFyIChueWxpZ2VuIHNrYXBhZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUS1hcnRpa2xhciAobnlsaWdlbiDDpG5kcmFkZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRLWFydGlrbGFyIChUb3BwIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEZW4gaMOkciBhcnRpa2VsbiDDpHIgdG9tISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTZW5hc3Qgc2thcGFkZSBGQVEtYXJ0aWtsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2VuYXN0IHVwcGRhdGVyYWRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wcCAxMCBGQVEtYXJ0aWtsYXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnb2ZmZW50bGlnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0zDpGdnIHRpbGwgRkFRLWFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWdvcmloYW50ZXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdSYWRlcmEgZGVubmEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdSZWRpZ2VyYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdVdGZvcnNrYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRLWhpc3RvcmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0xvZ2dib2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1NwcsOla2hhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMw6Rua2EgZXR0IGFubmF0IG9iamVrdCB0aWxsIGRlbm5hIEZBUS1hcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ1Nrcml2IHV0IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdLw7YgZsO2ciBnb2Rrw6RubmFuZGUgYXYgRkFRLWFydGlrbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTw7ZrIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnVmlzYSBGQVEtYXJ0aWtlbCBtZWQgSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnVmlzYSBGQVEgc8O2a3bDpGcgamEvbmVqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdMw7ZzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU3ltcHRvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm4gKGt1bmRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoYWdlbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ29mZmVudGxpZyAoYWxsYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdPbmdlemEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdNYW5lbm8gbWFrdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZWhlbXUgaW5haGl0YWppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdJZGhpbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnU2VoZW11IHlhIG1lbmVqaW1lbnRpIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdPbmdlemEgc2VoZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ09uZ2V6YSBzZWhlbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0hhcmlyaSBzZWhlbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdLaWppc2VoZW11IGNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1RhZmFkaGFsaSBjaGFndWEgamFwbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnTWFrdW5kaSB5YSB3YWthbGEgeWVueWUgcnVodXNhIGt3YSBoaWkgbWFrYWxhIGthdGlrYSBrYXRlZ29yaSBoaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdJdGFvbnllc2h3YSBrYW1hIHRhbWtvIGt3ZW55ZSBFeHBsb3Jlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0plIHVuYXRha2Ega3VmdXRhIGhpaSBzZWhlbXU/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnSHV3ZXppIGt1ZnV0YSBzZWhlbXUgaGlpLkltZXR1bWlrYSBuYSBtYWthbGEgeWEgbWFzd2FsaSBzaSBjaGluaSB5YSBtb2phIG5hL2F1IGlwbyBuZGFuaSB5YSBrYXRlZ29yaSBueWluZ2luZSBzaSBjaGluaSB5YSBtb2phLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdIaWkgc2VoZW11IGluYXR1bWlrYSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaWZ1YXRheW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0hpaSBuaSBzZWhlbXUgbWFtYSB5YSB2aWppc2VoZW11IHZpZnVhdGF2eW8gJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0plIHVuYXRha2EgS3VmdXRhIGhpaSBtYWthbGEgeWEgbWFzd2FsaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnTWFzd2FsaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnS2ljaHVuZ3V6YWppIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnVGFmdXRhIGhhcmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmQgaGF6aXJ1aHVzaXdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1RhZnV0YSB6YWlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnS2lqaWtpc2VoZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ01ha2FsYSB5YSBNYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnSGFrdW5hIHZpamlzZWhlbXUgdmlsaXZ5b3BhdGlrYW5hLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWEgeWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnTWF1ZGh1aSB5YSBoaXN0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnTXVkYSB3YSBrdXRlbmdlbmV6YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEYXRhIHphIGphcmlkYSBsYSBtYXN3YWxpIGhhemlqYXBhdGlrYW5hLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNZW5lamltZW50aSB5YSBsdWdoYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ09uZ2V6YSBsdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdPbmdlemEgTHVnaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0hhcmlyaSBMdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnSmUgdW5hdGFrYSBrdWZ1dGEgaGlpIGx1Z2hhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdIdXdlemkga3VmdXRhIGx1Z2hhIGhpaS4gSW1ldHVtaWthIGt3ZW55ZSBtYWthbGEgeWEgbWFzd2FsaSB6YWlkaSB5YSBtb2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0hpaSBsdWdoYSBpbWV0dW1pa2Ega2F0aWthIG1ha2FsYSB5YSh6YSkgbWFzd2FsaSBpZnVhdGF5by4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdNaXBhbmdpbGlvIHlhIG11a3RhZGhhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIGt3YSB1a3VyYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0hha3VuYSBkYXRhIHphIG1hc3dhbGknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ0thdGkgeWEgNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdOZW5vIGt1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnS3VyYSAobWZhbm8uIHNhd2EgbmEgMTAgYXUgWmFpZGkgeWEgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0tpd2FuZ28gKG1mYW5vIFNhd2EgbmEgMjUlIGF1IFphaWRpIHlhIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdLdWlkaGluaXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNYXJhIHlhIG13aXNobyBpbWViYWRpbGlzaHdhIG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnTXVkYSB3YSBrdXRlbmdlbmV6YSBtYWthbGEgeWEgbWFzd2FsaSAoa2FibGEvYmFhZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEgTWFrYWxhIHlhIG1hc3dhbGkgKGthdGlrYXRpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ011ZGEgd2Ega3ViYWRpbGlzaGEgbWFrYWxhIHlhIG1hc3dhbGkgKGthYmxhL2JhYWRhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdNdWRhIHdhIGt1YmFkaWxpc2hhIG1ha2FsYSB5YSBtYXN3YWxpIChrYXRpa2F0aSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnTmFrYWxhIG56aW1hIHlhIG1hc3dhbGkgeWFuYXlvIHVsaXp3YSBtYXJhIGt3YSBtYXJhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ1RhZnV0YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnQ2hhZ3VvIGxhIG1hZWxlem8gbWFmdXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdLdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdIYWt1bmEgTWlwYW5naWxpbyB5YSBrdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnS3VyYSBtYWFsdW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ01hZmFubyBTYXdhIG5hIDEwIGF1IFphaWRpIHlhIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdLaXdhbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdIYWt1bmEgbWlwYW5naWxpbyB5YSBraXdhbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdLaXdhbmdvIG1hYWx1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ01mYW5vIFNhd2EgbmEgMjUlIGF1IFphaWRpIHlhIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdNdWRhIHdhIGt1YmFkaWxpIG1ha2FsYSB5YSBtYXN3YWxpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0hhYmFyaSB6YSBNYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1RoYW1pbmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdLdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0hha3VuYSBLdXJhIHppbGl6b3BhdGlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnSGFrdW5hIGt1cmEuIEt1d2Egd2Ega3dhbnphIGt1dGhhbWluaXNoYSBtYWthbGEgaGlpIHlhIG1hc3dhbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEb3dubG9hZCBLaWFtYmF0YW5pc2h3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ05pIGt3YSBraWFzaSBnYW4gbWFrYWxhIGhpaSBpbWVzYWlkaWE/IFRhZmFkaGFsaSB0dXNhaWRpZSBrdXRoYW1pbmlzaGEga3VsZXRhIG1hYmFkaWxpa28ga2F0aWthIGRhdGFiYXNlIHlhIE1hc3dhbGkuIEFzYW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ0hhaW5hIE1zYWFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdJbmEgbXNhYWRhIHNhbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ09uZ2V6YSBraWNod2EgY2hhIGhhYmFyaSBjaGEgbWFzd2FsaSBrYXRpa2Egc29tbyB5YSBtYWthbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5naXphIG1hdGluaSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luZ2l6YSBtYXN3YWxpIHlvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5naXphIGxpbmsgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5naXphIG5ha2FsYSB5YSBtYXN3YWxpIG5hIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luZ2l6YSBtYXN3YWxpIHlvdGUgbmEgbGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0hha3VuYSBtYWthbGEgeWEgbWFzd2FsaSBpbGl5b3BhdGlrYW5hJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnVGFmdXRhIG5ha2FsYSBrYW1pbGkga2F0aWthIG1hc3dhbGkgeWFuYXlvb3VsaXp3YSBtYXJhIGt3YSBtYXJhIChtZmFubyAiSm9obiIgYXUgIldpbGwiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1ZpenVpemkgdnlhIGt1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIHllbnllIGt1cmEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnVml6dWl6aSB2eWEgdGhhbWFuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdNYWthbGEgeWEgbWFzd2FsaSB5YWxpeW90aGFtaW5pc2h3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1ZpenVpemkgdnlhIG11ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIHlhbGl5b3RlbmdlbmV6d2EgdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgeWFsaXRlbmdlbmV6d2Ega2F0aSB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdUYWZ1dGEgbWFlbGV6byBtYWZ1cGkga2FtYSBraWVsZXpvJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTmFtYmEgeWEgbWFrYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnVGFmdXRhIE1ha2FsYSBrd2EgbmVubyBrdXUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnVW1tYSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFjayB0byBGQVEgbWNodW5ndXppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnc2VoZW11IGl3ZSBuYSBqaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdIaWkgc2VoZW11IHRheWFyaSBpcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ1NlaGVtdSB5YSBtYXN3YWxpIGlsaXlvYmFkaWxpc2h3YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ1NlaGVtdSB5YSBtYXN3YWxpIGlsaXlvb25nZXp3YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnRnV0YSBzZWhlbXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0phcmlkYSBsYSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0ppbmEgbGluYWhpdGFqaWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0x1Z2hhIGlwbyB0YXlhcmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMdWdoYSB5YSBtYXN3YWxpIGltZWJhZGlsaXNod2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMdWdoYSB5YSBtYXN3YWxpICBpbWVvbmdlendhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdGdXRhIEx1Z2hhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdNYXRva2VvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTWFiYWRpbGlrbyB5YSBtd2lzaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnaWRhZGkgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0FzYW50ZSBrd2EgS3VyYSB5YWtvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1VtZXNoYXBpZ2Ega3VyYSB0YXlhcmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSGFrdW5hIGNoYWd1byBsYSBraXdhbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdDaGFwaXNoYSBtYWthbGEgeWEgbWFzd2FsaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIChNcHlhIGlsaXlvdGVuZ2VuZXp3YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIChJbGl5b2JhZGlsaXNod2EgaGl2aSBrYXJpYnVuaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgKDEwIGJvcmEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdNYWthbGEgbXB5YSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ01hcmVrZWJpc2hvIG1hcHlhIHlhIG1ha2FsYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdNYWthbGEgMTAgYm9yYSB5YSBNYXN3YWxpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnbmRhbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICduamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAndW1tYSc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ1Nhd2EnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnS2ljaHVqaW8gY2hhIG1hdG9rZW8geWEgSFRNTCBpbGkga3VvbmdlemEgdml1bmdvIGt3YSB0dW5nbyB6aWxpem8gZmFmYW51bGl3YS4gU3VyYSB5YSBlbGVtbnRpIGhpaSBpbmFydWh1c3UgbWFpbmdpem8geWEgYWluYSBtYmlsaS4gS3dhbnphIGppbmFsYSBzdXJhIChtZi4gZmFxLnBuZykuIEt3YSBrZXNpIGhpaSBzdXJhIHlhIG5qaWEgeWEgT1RPQk8gaXRhdHVtaWthLiBOamlhIHlhIHBpbGkgbmkga3VpbmdpemEga2l1bmdvIGNoYSBoaXlvIHN1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1JhbmdpIHlhIENTUyBrd2EgbWF0b2tlbyB5YSBrdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdNdWRhIHdhIG1hc3dhbGkgeWFsaXl5b3VsaXp3YSBtYXJhIG15aW5naSBrdWZ1dGlrYSBrdXRva2Ega3dlbnllIGt1bWJ1a3VtYnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1VzaW1hbWl6aSB3YSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdNd29uZ28gd2EgbWF0b2tlbyB5YSBrdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdKaW5hIGxhIGNoYWd1by1tc2luZ2kgbGEga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0NoYWd1by1tc2luZ2kgbGEgbHVnaGEgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEgbnlpbmdpIGthdGlrYSBsdWdoYSBtb2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdVa3Vid2Egd2EgdXBlbyB3YSBqdXUgY2hhZ3VvIG1zaW5naSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt1b255ZXNod2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0tpcGF1bWJlbGUgY2hhIGNoYWd1by1tc2luZ2kgY2hhIHRpa2V0aSBrd2EgaWRoaW5pIHlhIG1ha2FsYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdIYWxpIHlhIGNoYWd1by1tc2luZ2kgeWEgaW5naXpvIGxhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdIYWxpIHlhIGNoYWd1by1tc2luZ2kga3dhIHRpa2V0aSB6YSBpZGhpbmkgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0hhbGkgeWEgY2hhZ3VvLW1zaW5naSBrd2EgdGlrZXRpIHphIG1ha2FsYSB5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnVGhhbWFuaSB5YSBjaGFndW8tbXNpbmdpIGt3YSBwYXRhbWV0YSBhbWlsaWZ1IGt3YSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0VsZXphIGthbWEga2ljaHdhIGNoYSBoYWJhcmkgY2hhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmFueWluZ2kga2l1bmdhbmlzaHdlIG5hIHNvbW8gbGEgbWFrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnSW5hZWxlemEgbWFwaXRpbyB5YSBtb2R1bGkga3Vvbnllc2hhICBtdW9uZWthbm8gbWRvZ28gd2EgamFyaWRhIGxhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0luYWVsZXphIG1hcGl0aW8geWEgbW9kdWxpIGt1b255ZXNoYSBtdW9uZWthbm8gbWRvZ28gd2Egb3JvZGhhIHlhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kga2l1bWJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSB1cGFuZ2FqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHRhZnV0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBraXVtYmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHVwYW5nYWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgdGFmdXRpIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGtpdW1iaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgdXBhbmdhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB0YWZ1dGkgeWEga2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBraXVtYmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHVwYW5nYWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGtpdW1iaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgdXBhbmdhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kga2l1bWJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSB1cGFuZ2FqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdGYWZhbnVhIGNoYWd1by1tc2luZ2kgd2EgbXBhbmdpbGlvIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hdG9rZW8geWEga2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogeWEgc2FzYWhpdmkganV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRmFmYW51YSBjaGFndW8tbXNpbmdpIHdhIG1wYW5naWxpbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYXRva2VvIHlhIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogeWEgc2FzYWhpdmkganV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0ZhZmFudWEgY2hhZ3VvLW1zaW5naSB3YSBtcGFuZ2lsaW8gd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWF0b2tlbyB5YSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogeWEgc2FzYWhpdmkganV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0ZhZmFudWEgY2hhZ3VvLW1zaW5naSB3YSBtcGFuZ2lsaW8gd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWF0b2tlbyB5YSBrdXRhZnV0YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IHlhIHNhc2FoaXZpIGp1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdGYWZhbnVhIGNoYWd1by1tc2luZ2kgd2EgbXBhbmdpbGlvIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hdG9rZW8geWEga3V0YWZ1dGEga2F0aWthIGtpb2xlc3VyYSBjaGEgbXRlamEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IHlhIHNhc2FoaXZpIGp1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRmFmYW51YSBjaGFndW8tbXNpbmdpIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgbWFqaWJ1IHlhIHV0YWZ1dGFqaSBrYXRpa2EgaW50YWZhc2UgeWEgdW1tYS4gSnV1OiBLb25nd2UgemFpZGkganV1LiBDaGluaTogWWEgc2FzYSBoaXZpIGp1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFuYSBzaWZhIHlhIHV0YWZ1dGFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEgdXRhZnV0YWppIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0ZhZmFudWEgdGFhcmlmYSBpdGFrYXlvaW5naXp3YSBrd2VueWUgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgbWlzaW5naSB5YSB0aWtldGkuICJNYXN3YWxpIHlhbGl5b2phYSBuYXlheW91bGl6d2EgbWFyYSBrd2EgbWFyYSIgeWFuYXlvanVtdWlzaGEgbmFrYWxhLCB2aWFtYmF0YW5pc2hpIG5hIHRhc3dhaXJhIHlhIG1zdGFyaSB3YSBuZGFuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0ZhZmFudWEgc2FmdSB6aWxpem9vbnllc2h3YSBrYXRpa2Ega2l0YWZ1dGEgbWFzd2FsaS4gSGlsaSBjaGFndW8gaGFsaW5hIG1hZGhhcmEga2F0aWthIG5hZmFzaSBrd2VueWUgc2FmdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdGYWZhbnVhIHNhZnUgemlsaXpvb255ZXNod2Ega2F0aWthIGphcmlkYSBsYSBtYXN3YWxpLiBIaWxpIGNoYWd1byBoYWxpbmEgbWFkaGFyYSBrYXRpa2EgbmFmYXNpIGt3ZW55ZSBzYWZ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRmFmYW51YSBzYWZ1IHppbGl6b29ueWVzaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaS4gSGlsaSBjaGFndW8gaGFsaW5hIG1hZGhhcmEga2F0aWthIG5hZmFzaSBrd2VueWUgc2FmdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnVWZhZmFudXppIHdhIHVnYSB5YSBtYXRpbmkgaHVydSB5YSBraXBlbmdlbGUgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0Z1dGEgaGF5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdIYXJpcmkgbWFrYWxhIGhpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnV2V6ZXNoYSBMdWdoYSBueWluZ2kgbnlpbmdpIGthdGlrYSBtYXN3YWxpIGhheWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1dlemVzaGEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnS2ljaHVuZ3V6YWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnIEtpa29tbyAia2lkb2dvIiBjaGEgbWFwaXRpbyB5YSBqYXJpZGEgbGEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0tpa29tbyAia2lkb2dvIiBjaGEgbWFwaXRpbyB5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdNYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHRhZnV0YSBiYWNrZW5kIHJ1dGEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ1NlaGVtdTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnU2VoZW11NSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdNYWt1bmRpIHlhIGlkaGluaSBrd2EgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlhIHlhIG1hc3dhbGkgaGF5YSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0p1bXVpc2hhIHNlaGVtdSB6YSBuZGFuaSB6YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt1bGluZ2FuYSBuYSB0aWtldGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSnVtdWlzaGEgamluYSBsYSBraWxhIHNlaGVtdSB5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIG55aW5naSBrdWxpbmdhbmEgbmEgdGlrZXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0tpb2xlc3VyYSBhbWJhY2hvIHV0YWZ1dGFqaSB3YSBoYXJha2EgdW5hdGFraXdhIGt1b255ZXNod2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKYXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ01lbmVqaW1lbnRpIHlhIGx1Z2hhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1VuZ2FuaXNoZ2Ega2l0dSBraW5naW5lIG5hIGtpcGVuZ2VsZSBoaWtpIGNoYSAgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPcm9kaGEgeWEgYWluYSB5YSBoYWxpIGFtYmF6byB6aW5hd2V6YSBrdXR1bWlrYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09yb2RoYSB5YSBhaW5hIHlhIGhhbGkgYW1iYXpvIHppbmF3ZXphIGt1dHVtaWthIGthdGlrYSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT3JvZGhhIHlhIGFpbmEgeWEgaGFsaSBhbWJhem8gemluYXdlemEga3V0dW1pa2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgbWFqaWJ1IHlhIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSBtYWppYnUgeWEga2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthIG1hamlidSB5YSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSAgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSBtYWppYnUgeWEgdWNodW5ndXppICB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgbWFqaWJ1IHlhIHVjaHVuZ3V6aSAgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthIG1hamlidSB5YSB1Y2h1bmd1emkgIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSBraXZpbmphcmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIGtpdmluamFyaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2Ega2l2aW5qYXJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIHV0YWZ1dGFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2EgdXRhZnV0YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgIGthdGlrYSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2EgdXRhZnV0YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIGphcmlkYSBsYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxpIHlhIGt1emFsaXNoYSBtYWVsZXpvIG1hZnVwaSB5YSB1dGFmdXRhamkgd2Egd2F6aSB3YSBIVE1MIGt3YSB1dGFmdXRhamkgbWZ1cGkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB1bW1hLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTWFrYWxhIG1weWEgeWEgbWFzd2FsaSB5YW5haGl0YWppIGlkaGluaXNobyBrYWJsYSBoYXlhdG9sZXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YXRha2F5b29ueWVzaHdhIGthdGlrYSBraXRhZnV0YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YXRha2F5b29ueWVzaHdhIGthdGlrYSBraXRhZnV0YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWF0YWtheW9vbnllc2h3YSBrYXRpa2Ega2lsYSB1a3VyYXNhIHdhIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YXRha2F5b29ueWVzaHdhIGthdGlrYSBraWxhIHVrdXJhc2Egd2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEga2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ05hbWJhIHlhIHZpdHUgdmlsaXZvb255d2VzaHdhIGthdGlrYSBtYWJhZGlsaWtvIHlhIG13aXNoby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOYW1iYSB5YSB2aXR1IHZpbGl2b3RlbmdlbmV6d2EgbXdpc2hvbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTmFtYmEgeWEgdml0dSB2aWxpdm9vbnl3ZXNod2Ega2F0aWthIHZpcGVuZ2VsZSAxMCBib3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0YSB6YSBrdXJhc2EgKGFtYmF6byB2aXBlbmdlZSB2eWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB6aW1lb255ZXNod2EpIHphIG1hcGl0aW8gbWFkb2dvIHlhIGphcmlkYSBsYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGEgemEga3VyYXNhIChhbWJhem8gdmlwZW5nZWUgdnlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgemltZW9ueWVzaHdhKSB6YSBtYXBpdGlvIG1hZG9nbyB5YSAgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdDaGFwaXNoYSBtYXN3YWxpIGhheWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZvbGVuaSB5YSBpZGhpbmkgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEgYWt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1RoYW1pbmlzaG8gbGEga3VyYS4gRnVuZ3VvIGxhemltYSBpd2Uga3dlbnllIGFzaWxpbWlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdUYWZ1dGEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ1NldGkgdXJlZnUgd2EgY2hhZ3VvLW1zaW5naSAoa2F0aWthIHBpa3NlbGkpIHlhIG5kYW5pIHlhIG1zdGFyaSB3YSB1Z28gd2EgSFRNTCBrYXRpa2EgdWt1emFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdTZXRpIHVyZWZ1IHdhIGNoYWd1by1tc2luZ2kgKGthdGlrYSBwaWtzZWxpKSB5YSBuZGFuaSB5YSBtc3Rhcmkgd2EgdWdvIHdhIEhUTUwga2F0aWthIHVrdXphamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBtdGVqYS4obmEgdWt1emFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJheWEgdW1tYSApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ1NldGkgdXBlbyB3YSBqdXUgd2EgdXJlZnUgKGthdGlrYSBwaWtzZWxpKSB5YSBuZGFuaSB5YSBtc3Rhcmkgd2EgdWdvIHdhIEhUTUwga2F0aWthIHVrdXphamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0aSB1cGVvIHdhIGp1dSB3YSB1cmVmdSAoa2F0aWthIHBpa3NlbGkpIHlhIG5kYW5pIHlhIG1zdGFyaSB3YSB1Z28gd2EgSFRNTCBrYXRpa2EgdWt1emFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIG10ZWphLihhbmQgdWt1emFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHVtbWEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l0dWZlIGNoYSBcJ1wnIEluZ2l6YSBraXVuZ2FuaXNoaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYVwnXCcga2F0aWthIHdha2FsYSBmaWZpemEgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXR1ZmUgY2hhIFwnXCdJbmdpemEgbWF0aW5pIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgJiBraXVuZ2FuaXNoaVwnXCcgLyBcJ1wnaW5naXphIG1hd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5b3RlICZraXVuZ2FuaXNoaVwnXCcga2F0aWthIHdha2FsYSBmaWZpemEgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l0dWZlIGNoYSBcJ1wnIEluZ2l6YSBtYXRpbmkgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYVwnXCcgLyBcJ1wnSW5naXphIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeW90ZVwnXCcgIGthdGlrYSB3YWthbGEgIGZpZml6YSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdPbnllc2hhIG1ha2FsYSB5YSBtYXN3YWxpIG5hIEhUTUwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnT255ZXNoYSBuamlhIHlhIG1hc3dhbGkgbmRpby9oYXBhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdJbmFvbnllc2hhIHZpcGVuZ2VsZSB2eWEga2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0luYW9ueWVzaGEgdmlwZW5nZWxlIHZpbGl2eW9iYWRpbGlzaHdhIGthdGlrYSBraW9sZXN1cmEga2lsaWNob2ZhZmFudWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbmFvbnllc2hhIHZpcGVuZ2VsZSB2aWxpdnlvdGVuZ2VuZXp3YSBtd2lzaG9uaSBrYXRpa2Ega2lvbGVzdXJhICBraWxpY2hvZmFmYW51bGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0luYW9ueWVzaGEgdmlwZW5nZWxlICAxMCAgYm9yYSBrYXRpa2Ega2lvbGVzdXJhIGtpbGljaG9mYWZhbnVsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW5hb255ZXNoYSBrdXBpZ2Ega3VyYSBrYXRpa2Ega2lvbGVzdXJhIGtpbGljaG9mYWZhbnVsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdhbmlzaGkga2F0aWthIG9yb2RoYSBhbWJhY2hvIGtpbmFydWh1c3Uga3V1bmdhbmlzaHdhIGt3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIG5hIGtpcGVuZ2VsZSBraW5naW5lIGthdGlrYSBtYW5kaGFyaSBrdXp3YSB5YSBoYXlvIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEgYW1hYmNobyBraW5hcnVodXN1IGt1ZnV0YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYW5kaGFuaSBrdXp3YSBrYXRpa2Egd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEga3VmaWtpYSBoaXN0b3JpYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYW5kaGFyaSBrdXp3YSB5YSB3YWthbGEgd2Ega2lvbGVzdXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBrdWluZ2FuaXNoaSBrYXRpa2Egb3JvZGhhIGt1aGFyaXJpIGthdGlrYSBtYW5kaGFyaSBrdXp3YSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHdha2FsYSB3YSBraW9sZXN1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEgY2hhIGt1cnVkaSBueXVtYSBrYXRpa2EgbWFuZGhhcmkga3V6d2EgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB3YWthbGEgd2Ega2lvbGVzdXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdhbmlzaGkga2F0aWthIG9yb2RoYSBrdWNoYXBpc2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEgd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0tpdGFtYnVsaXNoaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSwgbWZhbm8gbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSMsS0IjLCBNeUZBUSMuIENoYWd1byBtc2luZ2kgbmkgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01wYW5naWxpbyBodXUgdW5hZmFmYW51YSBrd2FtYmEga2lwZW5nZWxlIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGtpbmF3ZXphIGt1dW5nYW5pc2h3YSBuYSBraXBlbmdlbGUga2luZ2luZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2Ega3V0dW1pYSBraXVuZ2FuaXNoaSBhaW5hIHlhIFwna2F3YWlkYVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01wYW5naWxpbyBodXUgdW5hZmFmYW51YSBrd2FtYmEga2lwZW5nZWxlIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGtpbmF3ZXphIGt1dW5nYW5pc2h3YSBuYSBraXBlbmdlbGUga2luZ2luZSBjaGEgdGlrZXRpIGt3YSBrdXR1bWlhIGtpdW5nYW5pc2hpIGFpbmEgeWEgXCdaYXppTXRvdG9cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnTXBhbmdpbGlvIGh1dSB1bmFmYWZhbnVhIGt3YW1iYSBraXBlbmdlbGUgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2luYXdlemEga3V1bmdhbmlzaHdhIG5hIGtpcGVuZ2VsZSBraW5naW5lIGNoYSB0aWtldGkga3dhIGt1dHVtaWEga2l1bmdhbmlzaGkgYWluYSB5YSBcJ2thd2FpZGFcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNcGFuZ2lsaW8gaHV1IHVuYWZhZmFudWEga3dhbWJhIGtpcGVuZ2VsZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBraW5hd2V6YSBrdXVuZ2FuaXNod2EgbmEga2lwZW5nZWxlIGtpbmdpbmUgY2hhIHRpa2V0aSBrd2Ega3V0dW1pYSBhaW5hIHlhIGtpdW5nYW5pc2hpIGtpemF6aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0tpaW5pIGNoYSB0aWtldGkga3dhIElkaGluaSB5YSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1NvbW8gbGEgdGlrZXRpIGt3YSBJZGhpbmkgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdLaXBlbmdlbGUgY2hhIG13YW1iYWEgemFuYSBrd2EgYWppbGkgeWEgbWthdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICduamUgKG10ZWphKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnbmRhbmkgKHdha2FsYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnVW1tYSAod290ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfguYDguJ7guLTguYjguKHguJrguJfguITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAn4LiE4Li14Lii4LmM4LmA4Lin4Li04Lij4LmM4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAn4LiV4LmJ4Lit4LiH4Lij4Liw4Lia4Li44Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICfguYDguJ7guLTguYjguKHguKvguKHguKfguJTguKvguKHguLnguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn4LmA4Lie4Li04LmI4Lih4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfguYHguIHguYnguYTguILguKvguKHguKfguJTguKvguKHguLnguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfguKvguKHguKfguJTguKvguKHguLnguYjguKLguYjguK3guKLguILguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfguIHguKPguLjguJPguLLguYDguKXguLfguK3guIHguK3guKLguYjguLLguIfguJnguYnguK3guKLguKvguJnguLbguYjguIfguIHguKXguLjguYjguKHguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+C4geC4peC4uOC5iOC4oeC5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4l+C4teC5iOC4quC4suC4oeC4suC4o+C4luC5gOC4guC5ieC4suC4luC4tuC4h+C4muC4l+C4hOC4p+C4suC4oeC5g+C4meC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn4LiI4Liw4LmB4Liq4LiU4LiH4LmA4Lib4LmH4LiZ4LiE4Lin4Liy4Lih4LiE4Li04LiU4LmA4Lir4LmH4LiZ4LmD4LiZRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4peC4muC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5ieC4q+C4o+C4t+C4reC5hOC4oeC5iD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfguITguLjguJPguYTguKHguYjguKrguLLguKHguLLguKPguJbguKXguJrguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguYTguJTguYnguYDguJ7guKPguLLguLDguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguJbguLnguIHguYPguIrguYnguYPguJnguK3guKLguYjguLLguIfguJnguYnguK3guKLguKvguJnguLbguYjguIfguJrguJfguITguKfguLLguKEgRkFRIOC4q+C4o+C4t+C4rSDguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguITguLfguK0g4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lir4Lil4Lix4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4LmD4LiK4LmJ4LmD4LiZ4LiB4Liy4Lij4LiV4Li04LiU4LiV4Liy4Lih4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4LiE4Li34Lit4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lir4Lil4Lix4LiB4LiC4Lit4LiH4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lii4LmI4Lit4Lii4LiV4LmI4Lit4LmE4Lib4LiZ4Li14LmJJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4muC4q+C4seC4p+C4guC5ieC4rSBGQVEg4LiZ4Li14LmJ4Lir4Lij4Li34Lit4LmE4Lih4LmIPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ+C4meC4seC4geC4quC4s+C4o+C4p+C4iCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmB4Lia4Lia4Lij4Lin4LiU4LmA4Lij4LmH4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICfguYTguKfguKXguJTguYzguIHguLLguKPguYzguJTguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmB4Lia4Lia4Lil4Liw4LmA4Lit4Li14Lii4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICfguKvguKHguKfguJTguKvguKHguLnguYjguKLguYjguK3guKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4ouC5iOC4reC4oic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+C5gOC4meC4t+C5ieC4reC4q+C4suC4m+C4o+C4sOC4p+C4seC4leC4tCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiHJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4p+C4suC4o+C4quC4suC4oyBGQVEgJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4oOC4suC4qeC4siBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn4LmA4Lie4Li04LmI4Lih4Lig4Liy4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4oOC4suC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn4LmB4LiB4LmJ4LmE4LiC4Lig4Liy4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguKXguJrguKDguLLguKnguLLguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+C4hOC4uOC4k+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4peC4muC4oOC4suC4qeC4suC4meC4teC5ieC5gOC4nuC4o+C4suC4sOC4oOC4suC4qeC4suC4meC4teC5ieC4geC4s+C4peC4seC4h+C5g+C4iuC5ieC5g+C4meC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4ouC4q+C4meC4tuC5iOC4h+C5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAn4Lig4Liy4Lip4Liy4LiZ4Li14LmJ4LmD4LiK4LmJ4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUShzKSDguYDguKvguKXguYjguLLguJnguLXguYknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguYnguK3guITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguILguK3guIfguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4LiC4LmJ4Lit4Lih4Li54LilIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnMSDguYPguJkgIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAn4LiE4Li14Lii4LmM4LmA4Lin4Li04Lij4LmM4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICfguYLguKvguKfguJUgKOC5gOC4iuC5iOC4mSDguYDguJfguYjguLLguIHguLHguJogMTAg4Lir4Lij4Li34Lit4Lih4Liy4LiB4LiB4Lin4LmI4LiyNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ+C5gOC4o+C4lSAo4LmA4LiK4LmI4LiZIOC5gOC4l+C5iOC4suC4geC4seC4miAyNSUg4Lir4Lij4Li34LitIOC4oeC4suC4geC4geC4p+C5iOC4siA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAn4Lit4LiZ4Li44Lih4Lix4LiV4Li04LmB4Lil4LmJ4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lOC5guC4lOC4oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC4geC5iOC4reC4mS/guKvguKXguLHguIcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5g+C4meC4o+C4sOC4q+C4p+C5iOC4suC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfguYDguKfguKXguLLguJfguLXguYjguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguJrguJfguITguKfguLLguKEgRkFRICjguIHguYjguK3guJkv4Lir4Lil4Lix4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfguYDguKfguKXguLLguJfguLXguYjguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguJrguJfguITguKfguLLguKEgRkFRICjguYPguJnguKPguLDguKvguKfguYjguLLguIcpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ+C4guC5ieC4reC4hOC4p+C4suC4oUZBUeC4ieC4muC4seC4muC5gOC4leC5h+C4oSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC5guC4lOC4oiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfguIHguLLguKPguYDguKXguLfguK3guIHguYLguJvguKPguYTguJ/guKXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ+C5guC4q+C4p+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiB4Liy4Lij4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LiX4Li14LmI4LmA4LiJ4Lie4Liy4Liw4LmA4LiI4Liy4Liw4LiI4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ+C5gOC4iuC5iOC4mSDguYDguJfguYjguLLguIHguLHguJogMTAg4Lir4Lij4Li34Lit4Lih4Liy4LiB4LiB4Lin4LmI4LiyNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ+C5gOC4o+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiB4Liy4Lij4LmA4Lij4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfguIHguLLguKPguJvguKPguLDguYDguKHguLTguJnguJfguLXguYjguYDguInguJ7guLLguLDguYDguIjguLLguLDguIjguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfguYDguIrguYjguJkg4LmA4LiX4LmI4Liy4LiB4Lix4LiaIDI1JSDguKvguKPguLfguK0g4Lih4Liy4LiB4LiB4Lin4LmI4LiyIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Lia4LiX4LiE4Lin4Liy4LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ+C4guC5ieC4reC4oeC4ueC4pSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAn4LmA4Lij4LiV4LiV4Li04LmJ4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ+C5hOC4oeC5iOC4nuC4muC4geC4suC4o+C5guC4q+C4p+C4lSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4geC4suC4o+C5guC4q+C4p+C4lSEg4LmA4Lib4LmH4LiZ4LiE4LiZ4LmB4Lij4LiB4LmD4LiZ4LiB4Liy4Lij4Lib4Lij4Liw4LmA4Lih4Li04LiZ4Lir4Lix4Lin4LiC4LmJ4LitIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC4quC4tOC5iOC4h+C4l+C4teC5iOC5geC4meC4muC4oeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ+C5g+C4meC4geC4suC4o+C5gOC4m+C4tOC4lOC4geC4suC4o+C4peC4tOC4h+C4hOC5jOC5g+C4meC4muC4peC5h+C4reC4geC4hOC4s+C4reC4mOC4tOC4muC4suC4ouC4leC5iOC4reC5hOC4m+C4meC4teC5iSDguITguLjguJPguK3guLLguIjguIjguLDguJXguYnguK3guIfguIHguJTguJvguLjguYjguKEgQ3RybCDguKvguKPguLfguK0gQ21kIOC4q+C4o+C4t+C4rSBTaGlmdCDguYPguJnguILguJPguLDguJfguLXguYjguIHguJTguKXguLTguIfguITguYwgKOC4guC4tuC5ieC4meC4reC4ouC4uOC5iOC4geC4seC4muC5gOC4muC4o+C4suC5gOC4i+C4reC4o+C5jOC5geC4peC4sOC4o+C4sOC4muC4muC4m+C4juC4tOC4muC4seC4leC4tOC4geC4suC4o+C4guC4reC4h+C4hOC4uOC4kyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfguKvguLHguKfguILguYnguK3guJnguLXguYnguYTguJTguYnguJvguKPguLDguYLguKLguIrguJnguYzguIHguLHguJrguITguLjguJPguKvguKPguLfguK3guYTguKHguYg/IOC4geC4o+C4uOC4k+C4suC5g+C4q+C5ieC4hOC4sOC5geC4meC4meC4guC4reC4h+C4hOC4uOC4k+C5geC4peC4sOC4iuC5iOC4p+C4ouC5g+C4meC4geC4suC4o+C4m+C4o+C4seC4muC4m+C4o+C4uOC4h+C4kOC4suC4meC4guC5ieC4reC4oeC4ueC4pSBGQVEuIOC4guC4reC4muC4hOC4uOC4kyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfguYTguKHguYjguKHguLXguJvguKPguLDguYLguKLguIrguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn4Lih4Li14Lib4Lij4Liw4LmC4Lii4LiK4LiZ4LmM4Lih4Liy4LiBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICfguYDguJ7guLTguYjguKHguKvguLHguKfguILguYnguK0gRkFRIOC5g+C4meC4leC4seC4p+C4muC4l+C4guC4reC4h+C4muC4l+C4hOC4p+C4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfguJvguYnguK3guJnguILguYnguK3guITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ+C4m+C5ieC4reC4mSBGQVEg4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ+C4m+C5ieC4reC4meC4peC4tOC4h+C4hOC5jCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ+C4m+C5ieC4reC4meC4peC4tOC4h+C4hOC5jOC5geC4peC4sOC4guC5ieC4reC4hOC4p+C4suC4oSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ+C4m+C5ieC4reC4mSBGQVEg4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4Lih4LmB4Lil4Liw4Lil4Li04LiH4LiE4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICfguITguYnguJnguKvguLLguYHguJrguJrguInguJrguLHguJrguYDguJXguYfguKHguYPguJnguJrguJfguITguKfguLLguKEgRkFRICjguYDguIrguYjguJkgIkpvaG4qbiIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfguILguYnguK3guIjguLPguIHguLHguJTguIHguLLguKPguYLguKvguKfguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ+C5gOC4ieC4nuC4suC4sOC4muC4l+C4hOC4p+C4suC4oUZBUSDguYLguJTguKLguIHguLLguKPguYLguKvguKfguJQuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICfguILguYnguK3guIjguLPguIHguLHguJTguIHguLLguKPguJvguKPguLDguYDguKHguLTguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAn4LmA4LiJ4Lie4Liy4Liw4Lia4LiX4LiE4Lin4Liy4LihRkFRIOC5guC4lOC4ouC4geC4suC4o+C4m+C4o+C4sOC5gOC4oeC4tOC4mS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ+C4geC4suC4o+C4iOC4s+C4geC4seC4lOC5gOC4p+C4peC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAn4LmA4LiJ4Lie4Liy4Liw4Lia4LiX4LiE4Lin4Liy4LihIEZBUeC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C5geC4peC5ieC4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfguYDguInguJ7guLLguLDguJrguJfguITguKfguLLguKEgRkFR4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4LmD4LiZ4Lij4Liw4Lir4Lin4LmI4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1NlYXJjaC1Qcm9maWxlIOC5gOC4m+C5h+C4meC5geC4oeC5iOC5geC4muC4mj8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfguKvguKHguLLguKLguYDguKXguILguJrguJfguITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICfguITguYnguJnguKvguLLguJrguJfguITguKfguLLguKHguJTguYnguKfguKLguITguLXguKLguYzguYDguKfguLTguKPguYzguJQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYggRkFRIEV4cGxvcmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn4LiV4LmJ4Lit4LiH4Lij4Liw4Lia4Li44LiK4Li34LmI4Lit4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4Lih4Li14Lit4Lii4Li54LmI4LmB4Lil4LmJ4LinISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn4Lit4Lix4Lib4LmA4LiU4LiV4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIIEZBUSDguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfguYDguJ7guLTguYjguKHguKvguKHguKfguJTguKvguKHguLnguYggRkFRIOC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn4Lil4Lia4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICfguKfguLLguKPguKrguLLguKMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+C4leC5ieC4reC4h+C4o+C4sOC4muC4uOC4iuC4t+C5iOC4rSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfguKDguLLguKnguLLguJnguLXguYnguKHguLXguK3guKLguLnguYjguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfguK3guLHguJvguYDguJTguJXguKDguLLguKnguLIgRkFRIOC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4oOC4suC4qeC4siBGQVEg4LmB4Lil4LmJ4LinISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfguKXguJrguKDguLLguKnguLIgJSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAn4Lic4Lil4Lil4Lix4Lie4LiY4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn4Lit4Lix4Lib4LmA4LiU4LiV4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ+C5hOC4lOC4oeC4suC4meC4tOC4hOC4n+C4tOC4peC4lOC5jOC4guC4reC4hyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn4LmE4Lih4LmI4Lih4Li14Lic4Lil4Lil4Lix4Lie4LiY4LmMISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ+C4guC4reC4muC4hOC4uOC4k+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5guC4q+C4p+C4leC4guC4reC4h+C4hOC4uOC4kyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfguITguLjguJPguYTguJTguYnguJfguLPguIHguLLguKPguYLguKvguKfguJXguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn4LmE4Lih4LmI4Lih4Li14LmA4Lij4LiX4LiX4Li14LmI4LiW4Li54LiB4LmA4Lil4Li34Lit4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfguJ7guLTguKHguJ7guYzguJrguJfguITguKfguLLguKEgRkFRICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5gOC4nuC4tOC5iOC4h+C4quC4o+C5ieC4suC4h+C5g+C4q+C4oeC5iCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5gOC4nuC4tOC5iOC4h+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAoMTAg4Lit4Lix4LiZ4LiU4Lix4Lia4Lii4Lit4LiU4LiZ4Li04Lii4LihKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICfguJrguJfguITguKfguLLguKHguJnguLXguYnguKfguYjguLLguIfguYDguJvguKXguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguKrguKPguYnguLLguIfguKXguYjguLLguKrguLjguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguK3guLHguJvguYDguJTguJXguKXguYjguLLguKrguLjguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJzEwIOC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Lii4Lit4LiU4LiZ4Li04Lii4LihJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn4Lig4Liy4Lii4LmD4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn4Lig4Liy4Lii4LiZ4Lit4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+C4quC4suC4mOC4suC4o+C4k+C4sCc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ+C5guC4reC5gOC4hCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UT0JPIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICfguJXguLHguKfguIHguKPguK3guIfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYHguKrguJTguIfguJzguKUgSFRNTOC5gOC4nuC4t+C5iOC4reC5gOC4nuC4tOC5iOC4oeC4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4h+C4l+C4teC5iOC4reC4ouC4ueC5iOC5gOC4muC4t+C5ieC4reC4h+C4q+C4peC4seC4h+C4guC4reC4h+C4reC4seC4geC4guC4o+C4sOC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSDguK3guIfguITguYzguJvguKPguLDguIHguK3guJrguILguK3guIfguKDguLLguJ7guJfguLXguYjguIjguLDguIrguYjguKfguKLguYPguKvguYnguKrguLLguKHguLLguKPguJbguJvguYnguK3guJnguILguYnguK3guKHguLnguKXguKrguK3guIfguIrguJnguLTguJTguYTguJTguYkg4Lir4LiZ4Li24LmI4LiH4LiE4Li34Lit4LiK4Li34LmI4Lit4LiC4Lit4LiH4Lig4Liy4LieICjguYDguIrguYjguJkgZmFxLnBuZynguYPguJnguIHguKPguJPguLXguJnguLXguYnguYDguKrguYnguJnguJfguLLguIfguILguK3guIfguKDguLLguJ5PVE9CTyDguIjguLDguJbguLnguIHguJnguLPguKHguLLguYPguIrguYkg4Liq4Lit4LiH4LiE4Li34Lit4LiB4Liy4Lij4LmB4LiX4Lij4LiB4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LmE4Lib4Lii4Lix4LiH4Lig4Liy4LieJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+C4quC4tSBDU1Mg4Liq4Liz4Lir4Lij4Lix4Lia4Lic4Lil4LiB4Liy4Lij4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICfguYDguKfguKXguLLguYHguITguIrguJfguLXguYjguIjguLDguJvguKXguYjguK3guKLguYPguKvguYnguKrguLPguKvguKPguLHguJrguKPguLLguKLguIHguLLguKNGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfguJXguLPguYHguKvguJnguYjguIfguJfguKjguJnguLTguKLguKHguILguK3guIfguJzguKXguIHguLLguKPguJnguLHguJrguITguLDguYHguJnguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+C4iuC4t+C5iOC4reC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn4Lig4Liy4Lip4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4LiaIEZBUSDguYPguJnguYLguKvguKHguJTguKDguLLguKnguLLguYDguJTguLXguKLguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAn4LiC4LiZ4Liy4LiU4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4Liq4Li54LiH4Liq4Li44LiU4LiC4Lit4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAn4Lil4Liz4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Liq4Liz4LiE4Lix4LiN4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04LiC4Lit4LiH4Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4geC4o+C4reC4geC4guC5ieC4reC4oeC4ueC4pSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guJXguLHguYvguKfguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguJrguJfguITguKfguLLguKEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfguJvguKPguLDguYDguKDguJfguJXguLHguYvguKfguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguJrguJfguITguKfguLLguKEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LmD4LiZ4Lir4LiZ4LmJ4Liy4Liq4Liy4LiY4Liy4Lij4LiT4LiwIOC4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4luC4ueC4geC4meC4s+C4oeC4suC5g+C4iuC5ieC5g+C4meC4quC4hOC4o+C4tOC4m+C4leC5jOC4guC4reC4h+C4o+C4sOC4muC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiW4LmJ4Liy4Lir4Liy4LiB4Lir4Lix4Lin4LiC4LmJ4LitRkFRIOC4hOC4p+C4o+C5hOC4lOC5ieC4o+C4seC4muC4geC4suC4o+C4leC4seC4lOC5geC4muC5iOC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC5hOC4m+C4ouC4seC4h+C4muC4l+C4hOC4p+C4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LmC4Lih4LiU4Li54Lil4Lig4Liy4Lie4Lij4Lin4Lih4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lih4Li44Lih4Lih4Lit4LiH4LmA4Lil4LmH4LiBIOC5hiDguILguK3guIfguKfguLLguKPguKrguLLguKMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYLguKHguJTguLnguKXguKDguLLguJ7guKPguKfguKHguJfguLXguYjguIjguLDguYHguKrguJTguIfguKHguLjguKHguKHguK3guIfguYDguKXguYfguIEg4LmGIOC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4mkZBUSDguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIdGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4mkZBUSDguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIcgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCBGQVEg4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4LiaIEZBUSDguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIdGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJpGQVEg4LmD4LiZIEZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4miAgRkFRIOC5g+C4mUZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJogIEZBUSDguYPguJlGQVEgRXhwbG9yZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLIgRkFRIEV4cGxvcmVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4siDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLIgRkFRIEV4cGxvcmVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Lil4Li54LiB4LiE4LmJ4LiyIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJQgRkFRIG9yZGVyIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSDguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYjguLLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguJfguLXguYjguYHguKrguJTguIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIdGQVEg4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4iOC4sOC5geC4l+C4o+C4geC5g+C4mUZBUSDguJXguLLguJfguJXguLHguYvguKcgIkZBUSDguInguJrguLHguJrguYDguJXguYfguKEiIOC4iOC4sOC4o+C4p+C4oeC4luC4tuC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC5geC4peC4sOC4oOC4suC4nuC4l+C4teC5iOC5geC4meC4muC4oeC4suC5geC4muC4muC4reC4tOC4meC5hOC4peC4meC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJTguIrguJrguK3guKPguYzguJTguYDguJrguLfguYnguK3guIfguKvguKXguLHguIcgICLguIjguLPguIHguLHguJQiIOC4hOC4t+C4reC4geC4s+C4q+C4meC4lOC4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5geC4quC4lOC4h+C5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSAi4LiB4Lil4Li44LmI4LihIiDguIjguLDguJbguLnguIHguJnguLPguKHguLLguYPguIrguYnguYDguJ7guLfguYjguK3guIjguLPguIHguLHguJTguIHguLLguKPguYDguILguYnguLLguJbguLbguIfguJvguKXguLHguYrguIHguK3guLTguJkgKOC5gOC4iuC5iOC4meC4geC4peC4uOC5iOC4oTog4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaOyDguIHguKXguLjguYjguKEgMTsg4LiB4Lil4Li44LmI4LihMjspICLguYDguKPguLTguYjguKHguJXguYnguJkiIOC4o+C4sOC4muC4uOC4p+C5iOC4suC4luC5ieC4suC4m+C4peC4seC5iuC4geC4reC4tOC4meC4luC4ueC4geC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4q+C4o+C4t+C4reC4q+C4suC4geC4nOC4ueC5ieC5g+C4iuC5ieC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4nuC4t+C5iOC4reC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5hOC4lOC5ieC4lOC5ieC4p+C4ouC4leC4meC5gOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIfguK3guKLguLnguYjguYPguJkgRkFRIEV4cGxvcmVyICDguIvguLbguYjguIfguJXguLHguKfguYDguKXguLfguK3guIHguJnguLXguYnguIjguLDguYTguKHguYjguKHguLXguJzguKXguJXguYjguK3guJXguLPguYHguKvguJnguYjguIfguILguK3guIfguITguK3guKXguLHguKHguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIfguK3guKLguLnguYjguYPguJnguJnguLTguJXguKLguKrguLLguKMgRkFRIOC4i+C4tuC5iOC4h+C4leC4seC4p+C5gOC4peC4t+C4reC4geC4meC4teC5ieC4iOC4sOC5hOC4oeC5iOC4oeC4teC4nOC4peC4leC5iOC4reC4leC4s+C5geC4q+C4meC5iOC4h+C4guC4reC4h+C4hOC4reC4peC4seC4oeC4meC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lit4Lil4Lix4Lih4LiZ4LmM4LiX4Li14LmI4LmB4Liq4LiU4LiH4Lit4Lii4Li54LmI4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSDguIvguLbguYjguIfguJXguLHguKfguYDguKXguLfguK3guIHguJnguLXguYnguIjguLDguYTguKHguYjguKHguLXguJzguKXguJXguYjguK3guJXguLPguYHguKvguJnguYjguIfguILguK3guIfguITguK3guKXguLHguKHguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICfguIHguLPguKvguJnguJTguKrguJbguLLguJnguJfguLXguYjguJfguLXguYjguKXguLTguIfguITguYwgXCfguYHguJfguKPguIFGQVEgXCcg4LiI4Liw4Lib4Lij4Liy4LiB4LiPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ+C4hOC4s+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4iuC5iOC4reC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn4Lil4LiaIEZBUSDguJnguLXguYkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfguYHguIHguYnguYTguIIgRkFRIOC4meC4teC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4Lir4Lil4Liy4LiB4Lir4Lil4Liy4Lii4Lig4Liy4Lip4LiyIOC5g+C4meC5guC4oeC4lOC4ueC4pSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4geC4peC5hOC4geC4geC4suC4o+C5guC4q+C4p+C4leC5g+C4meC5guC4oeC4lOC4ueC4pUZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfguJnguLHguIHguKrguLPguKPguKfguIgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfguKDguLLguJ7guKPguKfguKHguILguK3guIfguKfguLLguKPguKrguLLguKNGQVEi4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ+C4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h0ZBUSLguILguJnguLLguJTguYDguKXguYfguIEiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ2JhY2tlbmQgcm91dGVyIOC4hOC5ieC4meC4q+C4siBGQVEg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ+C4n+C4tOC4peC4lOC5jDQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAn4Lif4Li04Lil4LiU4LmMNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfguIHguKXguLjguYjguKHguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguJrguJfguITguKfguLLguKEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAn4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ+C4o+C4p+C4oeC5gOC4guC4leC4guC5ieC4reC4oeC4ueC4peC4oOC4suC4ouC5g+C4meC5gOC4geC4teC5iOC4ouC4p+C4geC4seC4mkZBUSDguJXguLLguKHguJXguLHguYvguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfguKPguKfguKHguJbguLbguIfguIrguLfguYjguK3guILguK3guIfguYHguJXguYjguKXguLDguYDguILguJXguILguYnguK3guKHguLnguKXguKDguLLguKLguYPguJlGQVEg4LiV4Liy4Lih4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAn4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmB4Lia4Lia4Lij4Lin4LiU4LmA4Lij4LmH4Lin4LiE4Lin4Lij4LiI4Liw4LmB4Liq4LiU4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICfguKfguLLguKPguKrguLLguKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4oOC4suC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICfguKXguLTguIfguITguYzguK3guK3guJrguYDguIjguIHguJXguYzguK3guLfguYjguJnguYTguJvguKLguLHguIcgRkFRIOC4meC4teC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguKPguLLguKLguIrguLfguYjguK3guILguK3guIfguJvguKPguLDguYDguKDguJfguKrguJbguLLguJnguKDguLLguJ7guJXguYjguLLguIfguYbguJfguLXguYjguKrguLLguKHguLLguKPguJbguYPguIrguYnguIfguLLguJnguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYzguYTguJTguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liy4Lii4LiK4Li34LmI4Lit4LiC4Lit4LiH4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiV4LmI4Liy4LiH4LmG4LiX4Li14LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4Liy4LmE4LiU4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguKPguLLguKLguIrguLfguYjguK3guILguK3guIfguJvguKPguLDguYDguKDguJfguKrguJbguLLguJnguKDguLLguJ7guJXguYjguLLguIfguYbguJfguLXguYjguKrguLLguKHguLLguKPguJbguYPguIrguYnguIfguLLguJnguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLDguYTguJTguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4mSBGQVEgRXhwbG9yZXIg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSAgRXhwbG9yZXIg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4p+C4suC4o+C4quC4suC4oyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEgIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4mSBGQVEgRXhwbG9yZXIg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHIEZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHIEZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEgIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4guC4reC4hyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4p+C4suC4o+C4quC4suC4oyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC5g+C4meC4geC4suC4o+C4quC4o+C5ieC4suC4h+C5guC4m+C4o+C5hOC4n+C4peC5jCBPcGVuU2VhcmNoIGh0bWwg4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSDguYHguJrguJrguIHguKPguLDguIrguLHguJog4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ+C4muC4l+C4hOC4p+C4suC4oUZBUSDguYPguKvguKHguYjguJXguYnguK3guIfguJfguLXguYjguYTguJTguYnguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguIHguYjguK3guJnguYTguJTguYnguKPguLHguJrguIHguLLguKPguJXguLXguJ7guLTguKHguJ7guYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C4muC4meC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4suC4guC4reC4h+C4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfguIjguLPguJnguKfguJkgaXRlbXMg4LiX4Li14LmI4LmB4Liq4LiU4LiH4LmD4LiZ4LiK4LmI4Lin4LiH4LiX4Li14LmI4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4LiE4Lij4Lix4LmJ4LiH4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn4LiI4Liz4LiZ4Lin4LiZIGl0ZW1zIOC4l+C4teC5iOC5geC4quC4lOC4h+C5g+C4meC4iuC5iOC4p+C4h+C4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4guC4tuC5ieC4meC4hOC4o+C4seC5ieC4h+C4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+C4iOC4s+C4meC4p+C4meC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5geC4quC4lOC4h+C4n+C4teC5gOC4iOC4reC4o+C5jOC5g+C4mSAxMCDguK3guLHguJnguJTguLHguJrguYHguKPguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LmD4LiZ4Lij4Liy4Lii4LiB4Liy4LijICjguIvguLbguYjguIfguIjguLDguYHguKrguJTguIfguKPguLLguKLguIHguLLguKMgRkFRICkg4LiC4Lit4LiH4Lin4Liy4Lij4Liq4Liy4LijIEZBUSDguILguJnguLLguJTguYDguKXguYfguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC5g+C4meC4o+C4suC4ouC4geC4suC4oyAgKOC4i+C4tuC5iOC4h+C4iOC4sOC5geC4quC4lOC4h+C4o+C4suC4ouC4geC4suC4oyBGQVEpIOC4guC4reC4hyDguKDguLLguJ7guKPguKfguKEgRkFR4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn4Lie4Li04Lih4Lie4LmMIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn4LiE4Li04Lin4LmD4LiZ4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04Lia4LiX4LiE4Lin4Liy4LihRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+C5gOC4o+C4leC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5guC4q+C4p+C4leC4leC5ieC4reC4h+C4geC4s+C4q+C4meC4lOC5gOC4m+C5h+C4meC4o+C5ieC4reC4ouC4peC4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfguITguYnguJnguKvguLIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn4LmA4LiL4LiV4LiE4LmI4Liy4LiE4Lin4Liy4Lih4Liq4Li54LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZKOC4nuC4tOC4geC5gOC4i+C4pSkg4LiC4Lit4LiH4Lif4Li04Lil4LiU4LmMSFRNTCDguYHguJrguJrguK3guLTguJnguYTguKXguJnguYzguYPguJkgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+C5gOC4i+C4leC4hOC5iOC4suC4hOC4p+C4suC4oeC4quC4ueC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSjguJ7guLTguIHguYDguIvguKUpIOC4guC4reC4h+C4n+C4tOC4peC4lOC5jEhUTUwg4LmB4Lia4Lia4Lit4Li04LiZ4LmE4Lil4LiZ4LmM4LmD4LiZQ3VzdG9tZXJGQVFab29tICAo4LmB4Lil4LiwIFB1YmxpY0ZBUVpvb20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ+C5gOC4i+C4leC4hOC5iOC4suC4hOC4p+C4suC4oeC4quC4ueC4h+C4quC4ueC4h+C4quC4uOC4lCjguJ7guLTguIHguYDguIvguKUpIOC4guC4reC4h+C4n+C4tOC4peC4lOC5jEhUTUwg4LmB4Lia4Lia4Lit4Li04LiZ4LmE4Lil4LiZ4LmM4LmD4LiZIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfguYDguIvguJXguITguYjguLLguITguKfguLLguKHguKrguLnguIfguKrguLnguIfguKrguLjguJQo4Lie4Li04LiB4LmA4LiL4LilKSDguILguK3guIfguJ/guLTguKXguJTguYxIVE1MIOC5geC4muC4muC4reC4tOC4meC5hOC4peC4meC5jOC5g+C4mUN1c3RvbWVyRkFRWm9vbSAo4LmB4Lil4LiwIFB1YmxpY0ZBUVpvb20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Li44LmI4LihICLguYHguJfguKPguIHguKXguLTguIfguITguYwgRkFRICIg4LmD4LiZIEFnZW50RkFRWm9vbVNtYWxsIOC4quC4s+C4q+C4o+C4seC4muC4muC4l+C4hOC4p+C4suC4oUZBUSDguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Li44LmI4LihICLguYHguJfguKPguIHguILguYnguK3guITguKfguLLguKEgRkFR4LmB4Lil4Liw4Lil4Li04LiH4LiE4LmMICIg4LmD4LiZIEFnZW50RkFRWm9vbVNtYWxsIOC4quC4s+C4q+C4o+C4seC4muC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJvguLjguYjguKEgIuC5geC4l+C4o+C4geC4guC5ieC4reC4hOC4p+C4suC4oSBGQVEgIiDguYPguJkgQWdlbnRGQVFab29tU21hbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAn4LmB4Liq4LiU4LiH4Lia4LiX4LiE4Lin4Liy4LihRkFRIOC4lOC5ieC4p+C4oiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfguYHguKrguJTguIcg4LmD4LiK4LmILyDguYTguKHguYjguYPguIrguYgg4Lie4Liy4LiYRkFRICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiC4Lit4LiH4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lii4LmI4Lit4LiiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+C5geC4quC4lOC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4l+C4teC5iOC4nOC5iOC4suC4meC4oeC4suC4peC5iOC4suC4quC4uOC4lOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4Lil4LmI4Liy4Liq4Li44LiU4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn4LmB4Liq4LiU4LiHMTAg4Lij4Liy4Lii4LiB4Liy4Lij4Lii4Lit4LiU4LiZ4Li04Lii4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfguYHguKrguJTguIfguIHguLLguKPguYLguKvguKfguJXguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guKXguLTguIfguITguYwgRkFRIOC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jOC4reC4t+C5iOC4meC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4reC4meC4uOC4jeC4suC4leC4geC4suC4o+C4peC4miBGQVHguYPguJnguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guYDguILguYnguLLguJTguLnguJvguKPguLDguKfguLHguJXguLTguILguK3guIcgRkFRIOC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LmB4LiB4LmJ4LmE4LiCIEZBUSDguYPguJnguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4ouC5ieC4reC4meC4geC4peC4seC4miBGQVEg4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lie4Li04Lih4Lie4LmMIEZBUSDguYPguJnguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfguKfguLTguJjguLXguYHguIHguYnguJvguLHguI3guKvguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ+C5gOC4hOC4o+C4t+C5iOC4reC4h+C5geC4quC4lOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ+C4leC4seC4p+C4muC5iOC4h+C4iuC4teC5ieC4quC4s+C4q+C4o+C4seC4miBGQVEsIOC5gOC4iuC5iOC4mSBGQVEjLCAgS0IjLCBNeUZBUSAjLiDguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguITguLfguK0gRkFRIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYnguIHguLPguKvguJnguJTguKfguYjguLLguK3guK3guJrguYDguIjguIHguITguYwgIFwnRkFRXCcg4Liq4Liy4Lih4Liy4Lij4LiW4Lil4Li04LiH4LiE4LmM4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMICBcJ0ZBUVwnIOC4reC4t+C5iOC4mSDguYLguJTguKLguIHguLLguKPguYPguIrguYnguKXguLTguIfguITguYwgIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYnguIHguLPguKvguJnguJTguKfguYjguLLguK3guK3guJrguYDguIjguIHguITguYwgXCdGQVFcJyDguKrguLLguKHguLLguKPguJbguKXguLTguIfguITguYzguIHguLHguJrguK3guK3guJrguYDguIjguIHguITguYwgXCdGQVFcJyDguK3guLfguYjguJkg4LmC4LiU4Lii4LiB4Liy4Lij4LmD4LiK4LmJ4Lil4Li04LiH4LiE4LmMIFwnUGFyZW50Q2hpbGRcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYnguIHguLPguKvguJnguJTguKfguYjguLLguK3guK3guJrguYDguIjguIHguITguYwgIFwnRkFRXCcg4Liq4Liy4Lih4Liy4Lij4LiW4Lil4Li04LiH4LiE4LmM4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMICBcJ+C4leC4seC5i+C4p1wnIOC4reC4t+C5iOC4mSDguYLguJTguKLguIHguLLguKPguYPguIrguYnguKXguLTguIfguITguYwgIFwnTm9ybWFsXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYnguIHguLPguKvguJnguJTguKfguYjguLLguK3guK3guJrguYDguIjguIHguITguYwgXCdGQVFcJyDguKrguLLguKHguLLguKPguJbguKXguLTguIfguITguYzguIHguLHguJrguK3guK3guJrguYDguIjguIHguITguYwgXCdGQVFcJyDguK3guLfguYjguJkg4LmC4LiU4Lii4LiB4Liy4Lij4LmD4LiK4LmJ4Lil4Li04LiH4LiE4LmMIFwnUGFyZW50Q2hpbGRcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAn4LmA4LiZ4Li34LmJ4Lit4LmA4Lij4Li34LmI4Lit4LiH4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04LiC4Lit4LiH4Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ+C4q+C4seC4p+C4guC5ieC4reC4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4reC4meC4uOC4oeC4seC4leC4tOC4guC4reC4h+C4muC4l+C4hOC4p+C4suC4oUZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn4Lig4Liy4Lii4LiZ4Lit4LiBICjguKXguLnguIHguITguYnguLIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICfguKDguLLguKLguYPguJkgKOC5gOC4reC5gOC4ouC5iOC4meC4leC5jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn4Liq4Liy4LiY4Liy4Lij4LiT4LiwICjguJfguLHguYnguIfguKvguKHguJQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LTQsNGC0Lgg0LDRgNGC0LjQutGD0Lsg0LTQvtCy0ZbQtNC90LjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAn0JrQu9GO0YfQvtCy0ZYg0YHQu9C+0LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQvtCx0L7Qslwn0Y/Qt9C60L7QstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn0J/QvtCz0L7QtNC20LXQvdC90Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn0JzQtdC90LXQtNC20LXRgCDQutCw0YLQtdCz0L7RgNGW0ZcgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICfQlNC+0LTQsNGC0Lgg0LrQsNGC0LXQs9C+0YDRltGOIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INC60LDRgtC10LPQvtGA0ZbRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn0JTQvtC00LDRgtC4INC60LDRgtC10LPQvtGA0ZbRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfQlNC+0LTQsNGC0Lgg0LrQsNGC0LXQs9C+0YDRltGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQutCw0YLQtdCz0L7RgNGW0Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9GW0LTQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQkdGD0LTRjCDQu9Cw0YHQutCwINCy0LjQsdC10YDRltGC0Ywg0YXQvtGHINC+0LTQvdGDINCz0YDRg9C/0YMg0LTQvtGB0YLRg9C/0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0Lgg0LDQvdCz0LXQvdGC0ZbQsiwg0YnQviDQvNCw0Y7RgtGMINC00L7RgdGC0YPQvyDQtNC+INGB0YLQsNGC0YLQtdC5INCyINGG0ZbQuSDQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC1INC/0L7QutCw0LfQsNC90L4sINGP0Log0LrQvtC80LXQvdGC0LDRgCDRgyDQn9GA0L7QstGW0LTQvdC40LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn0JLQuCDQtNGW0LnRgdC90L4g0YXQvtGH0LXRgtC1INCy0LjQtNCw0LvQuNGC0Lgg0YbRjiDQutCw0YLQtdCz0L7RgNGW0Y4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn0JLQuCDQvdC1INC80L7QttC10YLQtSDQstC40LTQsNC70LjRgtC4INGG0Y4g0LrQsNGC0LXQs9C+0YDRltGOLiDQktC+0L3QsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQsNCx0L4g0ZQg0LHQsNGC0YzQutGW0LLRgdGM0LrQvtGOINC00LvRjyDRltC90YjQvtGXINC60LDRgtC10LPQvtGA0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ9Cm0Y8g0LrQsNGC0LXQs9C+0YDRltGPINCy0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPINCyINC90LDRgdGC0YPQv9C90LjRhSDRgdGC0LDRgtGC0Y/RhSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn0KbRjyDQutCw0YLQtdCz0L7RgNGW0Y8g0ZQg0LHQsNGC0YzQutGW0LLRgdGM0LrQvtGOINC00LvRjyDQvdCw0YHRgtGD0L/QvdC40YUg0L/RltC00LrQsNGC0LXQs9C+0YDRltC5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQstC40LTQsNC70LjRgtC4INGG0Y4g0YHRgtCw0YLRgtGOPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfQkdCw0LfQsCDQt9C90LDQvdGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICfQntCz0LvRj9C0INCR0LDQt9C4INC30L3QsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn0KjQstC40LTQutC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn0J/RltC00YHRgtCw0L3QvtCy0LrQsCDQtNC+0LfQstC+0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn0KDQvtC30YjQuNGA0LXQvdC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn0J/RltC00LrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YLRliDQkdCw0LfQuCDQt9C90LDQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn0J/RltC00LrQsNGC0LXQs9C+0YDRltGXINC90LUg0LfQvdCw0LnQtNC10L3Rlic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn0IbRgdGC0L7RgNGW0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn0IbRgdGC0L7RgNGW0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Cn0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDQvNCw0ZQg0LbRg9GA0L3QsNC70YMgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Ca0LXRgNGD0LLQsNC90L3RjyDQvNC+0LLQsNC80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICfQlNC+0LTQsNGC0Lgg0LzQvtCy0YMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LzQvtCy0YMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ9CS0LjQutC+0YDQuNGB0YLQvtCy0YPQudGC0LUg0YbRjiDQvtC/0YbRltGOINGP0LrRidC+INCy0Lgg0YXQvtGH0LXRgtC1INC/0YDQsNGG0Y7QstCw0YLQuCDQtyDQtNC10LrRltC70YzQutC+0LzQsCDQvNC+0LLQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn0JTQvtC00LDRgtC4INC80L7QstGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ9CU0L7QtNCw0YLQuCDQvNC+0LLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LzQvtCy0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQstC40LTQsNC70LjRgtC4INGG0Y4g0LzQvtCy0YM/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ9Cm0Y8g0LzQvtCy0LAg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LIg0L3QsNGB0YLRg9C/0L3QuNGFINGB0YLQsNGC0YLRj9GFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAn0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC60L7QvdGC0LXQutGB0YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0YHRgtCw0YLRgtC10Lkg0L3QsCDRgdGC0L7RgNGW0L3QutGDJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ9Cd0LUg0LfQvdCw0LnQtNC10L3QviDQtNCw0L3QuNGFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICfQtyA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ9Ca0LvRjtGH0L7QstC10YHQu9C+0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn0J7RhtGW0L3QutCwICjQtNGW0LDQv9Cw0LfQvtC9INC30L3QsNGH0LXQvdC90Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ9Cg0LXQudGC0LjQvdCzICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICfQn9C+0LPQvtC00LbQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0JIg0L7RgdGC0LDQvdC90ZQg0LfQvNGW0L3QtdC90L46JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0KfQsNGBINGB0YLQstC+0YDQtdC90L3RjyDRgdGC0LDRgtGC0ZYgKNC00L4v0L/RltGB0LvRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0KfQsNGBINGB0YLQstC+0YDQtdC90L3RjyDRgdGC0LDRgtGC0ZYgKNC80ZbQtiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQp9Cw0YEg0LfQvNGW0L3QuCDRgdGC0LDRgtGC0ZYgKNC00L4v0L/RltGB0LvRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0KfQsNGBINC30LzRltC90Lgg0YHRgtCw0YLRgtGWICjQvNGW0LYpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ9Cf0L7QstC90L7RgtC10LrRgtC+0LLQuNC5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAn0J/QvtGI0YPQuiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfQktC40LHRltGAINC/0YDQvtGE0ZbQu9GOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfQntGG0ZbQvdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ9Cd0LXQvNCw0ZQg0L7RhtGW0L3QvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn0J7QutGA0LXQvNGWINC+0YbRltC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICfQn9GA0LjQutC70LDQtDog0YDRltCy0L3QtSAxMCDRh9C4INCx0ZbQu9GM0YjQtSDQvdGW0LYgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ9Cg0LXQudGC0LjQvdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfQndC10LzQsNGUINGA0LXQudGC0LjQvdCz0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ9Ce0LrRgNC10LzQuNC5INGA0LXQudGC0LjQvdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAn0J/RgNC40LrQu9Cw0LQ6INCg0ZbQstC90LUgMjUlINCw0LHQviDQsdGO0ZbQu9GM0YjQtSDQvdGW0LYgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAn0KfQsNGBINGB0YLQstC+0LXRgNC90L3RjyDRgdGC0LDRgtGC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICfQp9Cw0YEg0LfQvNGW0L3QuCDRgdGC0LDRgtGC0ZYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn0IbQvdGE0L7RgNC80LDRhtGW0Y8g0JHQsNC30Lgg0LfQvdCw0L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfQoNC10LnRgtC40L3Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9Ce0YbRltC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQndC10LzQsNGUINC+0YbRltC90L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn0J3QtSDQt9C90LDQudC00LXQvdC+INC+0YbRltC90L7QuiEg0JHRg9C00YzRgtC1INC/0LXRgNGI0LjQvCDRhdGC0L4g0L7RhtGW0L3QuNGC0Ywg0LTQsNC90YYg0YHRgtCw0YLRgtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfQl9Cw0LLQsNC90YLQsNC20LjRgtC4INCy0LrQu9Cw0LTQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ9CU0LvRjyDQstGW0LrRgNC40YLRgtGPINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvdCw0YHRgtGD0L/QvdC40YUg0L7Qv9C40YHQvtCy0LjRhSDQsdC70L7QutCw0YUsINCS0LDQvCDQvNC+0LbQu9C40LLQviDQtNC+0LLQtdC00LXRgtGM0YHRjyDQvdCw0YLQuNGB0L3Rg9GC0LggQ3RybCDQsNCx0L4gQ21kINCw0LHQviBTaGlmdCDQv9GW0LQg0YfQsNGBINCy0LjQsdC+0YDRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ9Cd0LDRgdC60ZbQu9GM0LrQuCDQutC+0YDQuNGB0L3QvtGOINCx0YPQu9CwINGG0Y8g0YHRgtCw0YLRgtGPPyDQkdGD0LTRjCDQu9Cw0YHQutCwINC30LDQu9C40YjRgtC1INC+0YbRltC60YMg0ZYg0LTQvtC/0L7QvNC+0LbRltGC0Ywg0L3QsNC8INC/0L7QutGA0LDRidGD0LLQsNGC0Lgg0JHQsNC30YMg0JfQvdCw0L3RjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfQvdC1INC00L7Qv9C+0LzQvtCz0LvQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfQtNGD0LbQtSDQtNC+0L/QvtC80L7Qs9C70L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ9CU0L7QtNCw0YLQuCDQt9Cw0LPQvtC70L7QstC+0Log0YHRgtCw0YLRgtGWINC00L4g0YLQtdC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn0JLRgdGC0LDQstC40YLQuCDRgtC10LrRgdGCINGB0YLQsNGC0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfQktGB0YLQsNCy0LjRgtC4INC/0L7QstC90YMg0YHRgtCw0YLRgtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Lgg0L/QvtGB0LjQu9Cw0L3QvdGPINC90LAg0YHRgtCw0YLRgtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtC4INGC0LXQutGB0YIg0YHRgtCw0YLRgtGWINGC0LAg0L/QvtGB0LjQu9Cw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtC4INC/0L7QstC90YMg0YHRgtCw0YLRgtGOINGC0LAg0LvRltC90LonOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfQndC1INC30L3QsNC50LTQtdC90L4g0YHRgtCw0YLRgtC10LknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfQptC1INC80L7QttC1INCx0YPRgtC4INC60L7RgNC40YHQvdC40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ9Cd0LUg0LfQvdCw0LnQtNC10L3QviDQutC+0YDQuNGB0L3QvtC70Zcg0ZbQvdGE0L7RgNC80LDRhtGW0Zcg0L/QviDQstCy0LXQtNC10L3RltC5INGC0LXQvNGWINGC0LAg0YLRltC70YMg0LfQstC10YDQvdC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfQktCy0LXQtNGW0YLRjCDRgtC10LzRgyDRh9C4INGC0LXQutGB0YIg0LfQstC10YDQvdC10L3QvdGPINGJ0L7QsSDQvtGC0YDQuNC80LDRgtC4INC60L7RgNC40YHQvdGDINGW0L3RhNC+0YDQvNGG0ZbRjic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtCy0L3QvtGC0LXQutGB0YLQvtCy0LjQuSDQv9C+0YjRg9C6INC/0L4g0YHRgtCw0YLRgtGP0YUg0JHQsNC30Lgg0JfQvdCw0L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDQvtGG0ZbQvdC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ9Ci0ZbQu9GM0LrQuCDRgdGC0LDRgtGC0ZYg0Lcg0L7RhtGW0L3QutCw0LzQuC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDRgNC10LnRgtC40L3Qs9GDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ9Ci0ZbQu9GM0LrQuCDRgdGC0LDRgtGC0ZYg0Lcg0YDQtdC50YLQuNC90LPQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn0KLQuNC80YfQsNGB0L7QstGWINGA0LDQvNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ9Ci0ZbQu9GM0LrQuCDRgdGC0LDRgtGC0ZYg0YHRgtCy0L7RgNC10L3Rlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfQotGW0LvRjNC60Lgg0YHRgtCw0YLRgtGWINGB0YLQstC+0YDQtdC90ZYg0LzRltC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ9Cf0YDQvtGE0ZbQu9GMINC/0L7RiNGD0LrRgyDRj9C6INGI0LDQsdC70L7QvT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGB0YLQsNGC0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Co0YPQutCw0YLQuCDRgdGC0LDRgtGC0Y4g0L/QvtC60LvRjtGH0L7QstC+0LzRgyDRgdC70L7QstGDJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ9Cf0YPQsdC70ZbRh9C90LjQuSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn0J/QvtCy0LXRgNC90YPRgtC40YHRjCDQtNC+INC/0YDQvtCy0ZbQtNC90LjQutCwINCR0LDQt9C4INCX0L3QsNC90YwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ9CS0LDQvCDQvdC10L7QsdGF0ZbQtNC90ZYg0L/RgNCw0LLQsCDQvdCwINC30LDQv9C40YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn0JrQsNGC0LXQs9C+0YDRltGPINC/0L7QstC40L3QvdCwINC80LDRgtC4INC90LDQt9Cy0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfQlNCw0L3QsCDQutCw0YLQtdCz0L7RgNGW0Y8g0YPQttC1INGW0YHQvdGD0ZQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfQntC90L7QstC70LXQvdC90ZYg0LrQsNGC0LXQs9C+0YDRltGXINC00L7QstGW0LTQvdC40LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ9CU0L7QtNCw0L3RliDQutCw0YLQtdCz0L7RgNGW0Zcg0LTQvtCy0ZbQtNC90LjQutCw0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ9Cd0LXQvtCx0YXRltC00L3QviDQstCy0LXRgdGC0Lgg0L3QsNC30LLRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQptGPINC80L7QstCwINCy0LbQtSDRltGB0L3Rg9GUISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn0J7QvdC+0LLQu9C10L3QviDQvNC+0LLRgyDQtNC+0LLRltC00LrQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ9CU0L7QtNCw0L3QviDQvNC+0LLRgyDQtNC+0LLRltC00LrQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICfQoNC10LfRg9C70YzRgtCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQlNGP0LrRg9GU0LzQviwg0LfQsCDRgtC1LCDRidC+INC/0YDQvtCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9CS0Lgg0LLQttC1INCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Cd0LXQvNCw0ZQg0L7QsdGA0LDQvdC+0Zcg0LrQsNGC0LXQs9C+0YDRltGXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn0J3QsNC00YDRg9C60YPQstCw0YLQuCDRgdGC0LDRgtGC0Y4g0LTQvtCy0ZbQtNC90LjQutCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn0JTQvtCy0ZbQtNC90LjQuiAo0L3QvtCy0ZYg0YHRgtCw0YLRgtGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn0JTQvtCy0ZbQtNC90LjQuiAo0L3QtdC00LDQstC90L4g0LfQvNGW0L3QtdC90ZYg0YHRgtCw0YLRgtGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfQlNC+0LLRltC00L3QuNC6ICjQvdCw0LnQutGA0LDRidGWIDEwINGB0YLQsNGC0YLQtdC5KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0YHRgtCy0L7RgNC10L3QsCDRgdGC0LDRgtGC0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0LfQvNGW0L3QtdC90LAg0YHRgtCw0YLRgtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfQotC+0L8gMTAg0YHRgtCw0YLRgtC10LknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfQstC90YPRgtGA0ZbRiNC90ZbQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ9C30L7QstC9adGI0L3RlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICfQv9GD0LHQu9GW0YfQvdC1JzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfQn9GA0L7QstGW0LTQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ9Cg0ZbRiNC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICfQodC40LzQv9GC0L7QvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ9Cy0ZbQtNC60YDQuNGC0LUgKNC60LvRltGU0L3RgtCw0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICfQstGW0LTQutGA0LjRgtC1ICjQsNCz0LXQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn0JfQsNCz0LDQu9GM0L3QvtC00L7RgdGC0YPQv9C90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfmt7vliqBGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICflhbPplK7lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfnsbvliKvmmK/lv4XpnIDnmoQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5a6h5om5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUeexu+WIq+euoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAn5re75YqgRkFR57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAn57yW6L6RRkFR57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+a3u+WKoOexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfmt7vliqDnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ+e8lui+keexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ+WtkOexu+WIq+S6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+ivt+iHs+WwkemAieaLqeS4gOS4que7hOadg+mZkC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+iDveiuv+mXruatpOexu+WIq+aWh+eroOeahOacjeWKoeS6uuWRmOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn5bCG5L2c5Li65rOo6YeK5Zyo5rWP6KeI5pe25pi+56S6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn5L2g56Gu5a6a6KaB5Yig6Zmk6L+Z5Liq57G75Yir5ZCXPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ+S9oOS4jeiDveWIoOmZpOi/meS4quexu+WIq++8jOivpeexu+WIq+iHs+WwkeWMheWQq+S4gOevh0ZBUeaWh+eroO+8jOaIluiAheiHs+WwkeWMheWQq+S4gOS4quWtkOexu+WIq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ+S4i+WIl0ZBUeaWh+eroOS9v+eUqOivpeexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfor6XnsbvliKvmmK/kuIvliJflrZDnsbvliKvnmoTniLbnsbvliKsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn5L2g56Gu5a6a6KaB5Yig6Zmk6K+lRkFR5paH56ug5ZCXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVHnn6Xor4blupMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUea1j+iniOWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICflv6vpgJ/mkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ+WFgeiuuOS9v+eUqOmAmumFjeespuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfpq5jnuqfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+WtkOexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfmsqHmnInmib7liLDlrZDnsbvliKsuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfljoblj7InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn5Y6G5Y+y5YC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfliJvlu7rml7bpl7QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn5rKh5pyJ5om+5YiwRkFR5pel5b+X5pWw5o2u44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUeivreiogOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAn5re75YqgRkFR6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAn57yW6L6RRkFR6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ+WmguaenOimgeS9v+eUqOWkmuivreiogOWwseS9v+eUqOacrOWKn+iDveOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfmt7vliqDor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAn5re75Yqg6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICfnvJbovpHor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ+S9oOehruWumuimgeWIoOmZpOi/meS4quivreiogOWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAn5L2g5LiN6IO95Yig6Zmk6L+Z5Liq6K+t6KiA77yM6Iez5bCR5pyJ5LiA56+HRkFR5paH56ug5L2/55So6K+l6K+t6KiAISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+S4i+WIl0ZBUeaWh+eroOS9v+eUqOivpeivreiogCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+S4iuS4i+aWh+iuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfmr4/pobXmmL7npLrnmoRGQVHmlofnq6DmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn5rKh5pyJ5om+5YiwRkFR5pWw5o2u44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcoNeWIhuWItiknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAn5YWz6ZSu5a2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICfmipXnpajmlbAgKOS+i+Wmgu+8jD0gMTAg5oiWID49IDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICfor4TliIYgKOS+i+Wmgu+8jD0gMTAlIOaIliA+PSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAn6YCa6L+H5a6h5om5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+S4iuasoeS/ruaUueS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtCjnm7jlr7kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtCjnu53lr7kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0KOebuOWvuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0KOe7neWvuSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFR5YWo5paHJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFR5pCc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAn6YWN572u6YCJ5oupJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfmipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ+aXoOaKleelqOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ+aMh+WumuaKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICfkvovlpoLvvJrnrYnkuo4xMOaIluiAheWkp+S6jjYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICfor4TliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ+aXoOivhOWIhuiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAn5oyH5a6a6K+E5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAn5L6L5aaC77ya562J5LqOMjUl5oiW5aSn5LqONzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRkFR5paH56ug5Yib5bu65pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUeivpue7huS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfor4TliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfmipXnpajmrKHmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn6L+Y5rKh5pyJ5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn6L+Y5rKh5pyJ5oqV56WoISDov5nlsIbmmK/or6UgRkFRIOaWh+eroOeahOesrOS4gOS4quaKleelqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5LiL6L296ZmE5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAn6KaB5omT5byA5LiL6Z2i5o+P6L+w5Lit55qE6ZO+5o6l77yM5L2g5Y+v6IO96ZyA6KaB5Zyo5Y2V5Ye76ZO+5o6l55qE5ZCM5pe25oyJ5L2PIEN0cmwg5oiWIENtZCDmiJYgU2hpZnQg6ZSuIO+8iOWPluWGs+S6juaCqOeahOa1j+iniOWZqOWSjOaTjeS9nOezu+e7nyDvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfmraTmlofmoaPlr7nmgqjmnInluK7liqnlkJfvvJ/or7fnu5nlh7rmgqjnmoTor4Tku7fvvIzluK7liqnmiJHku6zlrozlloTnn6Xor4blupPvvIzosKLosKLvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfmsqHmnInluK7liqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn5b6I5pyJ5biu5YqpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICflop7liqBGQVHmoIfpopjliLDmlofnq6DkuLvpopjkuK0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn5o+S5YWlRkFR5paH5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ+aPkuWFpeWujOaVtEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfmj5LlhaVGQVHpk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ+aPkuWFpUZBUeato+aWh+WSjOmTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAn5o+S5YWl5a6M5pW0RkFR5ZKM6ZO+5o6lJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn5pyq5om+5YiwRkFR5paH56ug44CCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAn6L+Z5pyJ5Yqp5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICfmsqHmnInmib7liLDmnInnlKjnmoTkuLvpopjlkozmraPmlofotYTmupDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ+mUruWFpeS4u+mimOaIluato+aWh+S7peiOt+WPluacieeUqOeahOi1hOa6kOa4heWNleOAgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn5ZyoRkFR5Lit6L+b6KGM5YWo5paH5pys5pCc57Si77yI5L6L5aaC77ya4oCcSm9obipu4oCd5oiW4oCcV2lsbCrigJ3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfmipXnpajpmZDliLbmnaHku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ+S7hUZBUeaWh+eroOeahOaKleelqOaVsOKApuKApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ+ivhOWIhumZkOWItuadoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfku4VGQVHmlofnq6DnmoTor4TliIbigKbigKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICfml7bpl7Tmn6Xor6LmnaHku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ+S7hUZBUeaWh+eroOeahOWIm+W7uuaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfku4XlnKjku6XkuIvml7bpl7TmrrXliJvlu7rnmoRGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAn5bCG5pCc57Si6YWN572u6K6+572u5Li65qih5p2/77yfJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAn5paH56ug57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn5L2/55So5YWz6ZSu5a2X5pCc57Si5paH56ugJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ+WFrOW8gCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn6L+U5ZueRkFR5rWP6KeI5ZmoJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfkvaDpnIDopoFyd+adg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAn5rKh5pyJ5om+5Yiw55So5oi35pyJ6K+75YaZ5p2D6ZmQ55qE57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ+ayoeacieaJvuWIsOm7mOiupOivreiogOS4lOaXoOazleWIm+W7uuaWsOeahOivreiogOOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ+mcgOimgUNhdGVnb3J5SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn5b+F6aG76L6T5YWl57G75Yir5ZCN56ewISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn57G75Yir5bey5a2Y5ZyoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn6K+l57G75Yir5bey5a2Y5Zyo77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aQ2F0ZWdvcnlJRCDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAn5LiN6IO95Yig6Zmk57G75YirJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFR57G75Yir5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFR57G75Yir5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfliKDpmaTnsbvliKsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aSXRlbUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAn5L2g5rKh5pyJ5p2D6ZmQ5L2/55So5q2k57G75Yir77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ+S4jeiDveWIoOmZpOefpeivhuW6k+aWh+eroCVz77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0NhdGVnb3J5SUQgJXPml6DmlYjjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+S4jeiDveaYvuekuuWOhuWPsuS/oeaBr++8jOWboOS4uuayoeacieaMh+Wumkl0ZW1JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUeWOhuWPsic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUeaXpeW/lyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICfpnIDopoHphY3nva7pgInpoblGQVE6OkZyb250ZW5kOjpPdmVydmlld+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfphY3nva7pgInpoblGQVE6OkZyb250ZW5kOjpPdmVydmlld+mcgOimgeaYr+S4gOS4quWTiOW4jOW8leeUqO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ+ayoeacieaJvuWIsOinhuWbvuKAnCVz4oCd55qE6YWN572u6YCJ6aG577yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumkxhbmd1YWdlSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn5ZCN56ew5piv5b+F6ZyA55qEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+ivpeivreiogOW3sue7j+WtmOWcqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAn5LiN6IO95Yig6Zmk6K+t6KiAJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFR6K+t6KiA5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFR6K+t6KiA5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfliKDpmaTor63oqIAgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ+e7k+aenCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ+S4iuasoeabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdGQVHliqjmgIHlrZfmrrUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumiVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ+S4jeiDvei9veWFpeivreiogOWvueixoe+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfml6Dnu5PmnpzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUee8luWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICfmnIDlkI7kv67mlLnkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfnn6Xor4blupPmnaHnm67liJvlu7rml7bpl7TvvIjlnKguLi7kuYvliY0v5LmL5ZCO77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ+efpeivhuW6k+adoeebruWIm+W7uuaXtumXtO+8iOWcqC4uLuS5i+mXtO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+efpeivhuW6k+adoeebruS/ruaUueaXtumXtO+8iOWcqC4uLuS5i+WJjS/kuYvlkI7vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn55+l6K+G5bqT5p2h55uu5L+u5pS55pe26Ze077yI5ZyoLi4u5LmL6Ze077yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ+etieS6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICflpKfkuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ+Wkp+S6juetieS6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICflsI/kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ+Wwj+S6juetieS6jic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfpnIDopoFGaWxlSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn5oSf6LCi5oKo55qE5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+aCqOW3sue7j+aKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfmsqHmnInpgInmi6nmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ+aKleelqOacuuWItuayoeacieWQr+eUqO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ+ayoeacieWumuS5ieaKleelqOeahOacgOWkp+ivhOWIhuaVsO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVHmlofnq6DmiZPljbAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICflnKguLi7kuYvpl7TliJvlu7onOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAn6ZyA6KaBSXRlbUlE77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdGQVHmlofnq6Ao5paw5Yib5bu655qEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFR5paH56ugKOacgOi/keS/ruaUueeahCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFR5paH56ugKOWJjTEw5ZCNKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumuexu+Wei++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICfnsbvlnovlv4XpobvmmK/mnIDlkI7liJvlu7rjgIHmnIDlkI7kv67mlLnmiJZUb3AxMO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ+S4jeiDveWIm+W7ulJTU+aWh+S7tu+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclc++8iEZBUeWFqOaWh++8iSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0g5a6i5oi377yIJXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDlrqLmiLfvvIhGQVHlhajmlofvvIknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g5YWs5byA77yIJXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g5YWs5byA77yIRkFR5YWo5paH77yJJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ+ivt+ivhOWIhu+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn5paH56ug5peg5YaF5a6577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOi/keWIm+W7uueahEZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5Hkv67mlLnnmoRGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOW4uOeUqOeahOaWh+eroCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICflhoXlrrnnsbvlnosnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ+WGhemDqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ+WklumDqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICflhazlvIAnOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfnoa7lrponOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVE9CTyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAn5ZyoSFRNTOi+k+WHuue7k+aenOS4reS4uumihOWumuS5ieWtl+espuS4sua3u+WKoOmTvuaOpeeahOi/h+a7pOWZqOOAguWbvuWDj+WFg+e0oOWFgeiuuOS4pOenjei+k+WFpeaWueW8j++8muesrOS4gOenjeaYr+eUqOWbvuWDj+eahOWQjeensO+8iOWmgmZhcS5wbmfvvInvvIzlnKjov5nnp43mg4XlhrXkuIvkvJrkvb/nlKhPVE9CT+eahOWbvuWDj+i3r+W+hO+8m+esrOS6jOenjeaYr+aPkuWFpeWbvuWDj+eahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICfmt7vliqBGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfmipXnpajnu5PmnpznmoRDU1PpopzoibLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ0ZBUeaWh+eroOiDveaYvuekuueahOaXtumXtOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn566h55CG57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAn566h55CG57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICflrqLmiLdGQVHmiZPljbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICflrqLmiLdGQVHnm7jlhbPnmoTmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAn5a6i5oi3RkFR55u45YWz55qE5paH56ug44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ+WuouaIt0ZBUeivpuaDheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ+WuouaIt0ZBUeaQnOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAn5a6i5oi3RkFR44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+S7peWNgeWIhuWItuaYvuekuuivhOWIhue7k+aenOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAn6buY6K6k55qE55uu5b2V5ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfljZXor63oqIDmqKHlvI/kuItGQVHmlofnq6DnmoTpu5jorqTor63oqIDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnRkFR5paH56ug6buY6K6k5pi+56S65qCH6aKY55qE5pyA5aSn5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0ZBUSDmlofnq6DlrqHmibnor7fmsYLlt6XljZXnmoTpu5jorqTkvJjlhYjnuqfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0ZBUeaWh+eroOeahOm7mOiupOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFRIOaWh+eroOivt+axguaJueWHhuW3peWNleeahOm7mOiupOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVEg5paH56ug6K+35rGC5om55YeG5bel5Y2V55qE6buY6K6k57G75Z6L44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICflhazlhbHliY3nq6/nlYzpnaLmjIfku6Tlj4LmlbDnmoTpu5jorqTlgLzvvIzmjIfku6Tlj4LmlbDnlKjkuo7ns7vnu5/ohJrmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeWvueixoeWwj+mDqOS7tihMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IFwiY29tcGxleFwiKeiuvue9ruaMiemSruS4reeahOaTjeS9nOOAguivt+azqOaEj++8jOi/meS6m+aTjeS9nOW/hemhu+W3sue7j+WcqOS7peS4i0pT5ZKMQ1NT5paH5Lu25Lit5rOo5YaM77yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBIENvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz5ZKMQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn5a6a5LmJRkFR5qCH6aKY5piv5ZCm6KaB5Yqg5Yiw5paH56ug5Li76aKY5Lit44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICflrprkuYnkuIDkuKrmmL7npLpGQVHml6Xlv5fnroDmtIHop4blm77nmoTmpoLop4jmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAn5a6a5LmJ5LiA5Liq5pi+56S6RkFR5YiX6KGo566A5rSB6KeG5Zu+55qE5qaC6KeI5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjmnI3liqHkurrlkZjnlYzpnaLnmoRGQVHmkJzntKLnu5PmnpzkuK3mjpLluo/nmoTpu5jorqRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWuouaIt+eVjOmdoueahEZBUeaQnOe0oue7k+aenOS4reaOkuW6j+eahOm7mOiupEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWFrOWFseeVjOmdoueahEZBUeaQnOe0oue7k+aenOS4reaOkuW6j+eahOm7mOiupEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOacjeWKoeS6uuWRmOeVjOmdoueahEZBUea1j+iniOWZqOS4reaOkuW6j+eahOm7mOiupEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWuouaIt+eVjOmdoueahEZBUea1j+iniOWZqOS4reaOkuW6j+eahOm7mOiupEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjlhazlhbHnlYzpnaLnmoRGQVHmtY/op4jlmajkuK3mjpLluo/nmoTpu5jorqRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlnKjmnI3liqHkurrlkZjnlYzpnaLnmoRGQVHmtY/op4jlmajkuK3mmL7npLpGQVHnmoTpobrluo/jgILlkJHkuIrvvJrmnIDml6nnmoTlnKjmnIDkuIrpnaLvvIzlkJHkuIvvvJrmnIDmlrDnmoTlnKjmnIDkuIrpnaLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlnKjlrqLmiLfnlYzpnaLnmoRGQVHmtY/op4jlmajkuK3mmL7npLpGQVHnmoTpobrluo/jgILlkJHkuIrvvJrmnIDml6nnmoTlnKjmnIDkuIrpnaLvvIzlkJHkuIvvvJrmnIDmlrDnmoTlnKjmnIDkuIrpnaLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5YWs5YWx55WM6Z2i55qERkFR5rWP6KeI5Zmo5Lit5pi+56S6RkFR55qE6aG65bqP44CC5ZCR5LiK77ya5pyA5pep55qE5Zyo5pyA5LiK6Z2i77yM5ZCR5LiL77ya5pyA5paw55qE5Zyo5pyA5LiK6Z2i44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOacjeWKoeS6uuWRmOeVjOmdoueahEZBUeaQnOe0oue7k+aenOS4reeahOaYvuekuumhuuW6j+OAguWQkeS4iu+8muacgOaXqeeahOWcqOacgOS4iumdou+8jOWQkeS4i++8muacgOaWsOeahOWcqOacgOS4iumdouOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlnKjlrqLmiLfnlYzpnaLnmoRGQVHmkJzntKLnu5PmnpzkuK3nmoTmmL7npLrpobrluo/jgILlkJHkuIrvvJrmnIDml6nnmoTlnKjmnIDkuIrpnaLvvIzlkJHkuIvvvJrmnIDmlrDnmoTlnKjmnIDkuIrpnaLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWFrOWFseeVjOmdoueahEZBUeaQnOe0oue7k+aenOS4reeahOaYvuekuumhuuW6j+OAguWQkeS4iu+8muacgOaXqeeahOWcqOacgOS4iumdou+8jOWQkeS4i++8muacgOaWsOeahOWcqOacgOS4iumdouOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5iUZBUeaQnOe0oueql+WPo+S4rem7mOiupOeahOeUqOS6juaQnOe0oueahEZBUeWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICflrprkuYnln7rkuo5GQVHnmoTlt6XljZXkuK3opoHmj5LlhaXnmoTkv6Hmga/jgILigJzlrozmlbRGQVHigJ3ljIXmi6zmlofmnKzjgIHpmYTku7blkozlhoXltYzlm77lg4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAn5a6a5LmJ5Luq6KGo5p2/55qE5ZCO56uv5Y+C5pWw44CC4oCc6ZmQ5Yi24oCd5a6a5LmJ6buY6K6k5pi+56S65p2h55uu55qE5pWw6YeP44CC4oCc57uE4oCd55So5LqO5o6n5Yi26IO96K6/6Zeu5q2k5qih5Z2X55qE57uE77yI5aaC77yaYWRtaW47Z3JvdXAxO2dyb3VwMue7hO+8ieOAguKAnOm7mOiupOKAneihqOekuuatpOaooeWdl+m7mOiupOS4uuWPr+eUqOaIlumcgOimgeeUqOaIt+aJi+WKqOWQr+eUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICflrprkuYnlnKhGQVHmtY/op4jlmajkuK3opoHmmL7npLrnmoTliJfjgILov5nkuKrpgInpobnkuI3kvJrlvbHlk43liJfnmoTkvY3nva7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICflrprkuYnlnKhGQVHml6Xlv5fkuK3opoHmmL7npLrnmoTliJfjgILov5nkuKrpgInpobnkuI3kvJrlvbHlk43liJfnmoTkvY3nva7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+WumuS5ieWcqEZBUeaQnOe0oue7k+aenOS4reimgeaYvuekuueahOWIl+OAgui/meS4qumAiemhueS4jeS8muW9seWTjeWIl+eahOS9jee9ruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ+WumuS5ieKAnOaPkuWFpUZBUeKAnemTvuaOpeWcqOS9leWkhOaYvuekuuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICflrprkuYkgRkFRIOadoeebrueahOS4jeWPl+mZkOaWh+Wtl+Wtl+autS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn5Yig6Zmk6L+Z56+HRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5re75YqgRkFR56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoue8lui+kUZBUeeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2iRkFR5qaC6KeI56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2iRkFR5qaC6KeI56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmiZPljbBGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouaJk+WNsEZBUeeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouaJk+WNsEZBUeeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouaQnOe0okZBUeeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouaQnOe0okZBUeeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLmkJzntKJGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaJGQVHmpoLop4jnroDmtIHmoLzlvI/nqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2iRkFR6K+m5oOF56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdokZBUeivpuaDheeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2iRkFR6K+m5oOF56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfnvJbovpFGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+WcqEZBUeaooeWdl+S4reWQr+eUqOWkmuenjeivreiogOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICflkK/nlKjlrqLmiLfliY3nq6/nmoTnm7jlhbPmlofnq6Dlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICflnKhGQVHmqKHlnZfkuK3lkK/nlKjmipXnpajmnLrliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfmtY/op4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVggUmVzcG9uZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAn55So5LqORkFR5a+M5paH5pys55qEQUpBWCBSZXNwb25kZXLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdGQVHljLrln58nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnRkFR5Yy65Z+f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnRkFR5Yig6Zmk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0ZBUee8lui+keOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdGQVHljoblj7LjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeaXpeW/l+amguiniOKAnOeugOa0geinhuWbvuKAnemZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeamguiniOKAnOeugOa0geinhuWbvuKAnemZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnRkFR5omT5Y2w44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICfmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHmkJzntKLnmoTlkI7lj7DpgInpobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAn5a2X5q61NCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICflrZfmrrU1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAn5a6M5pW0RkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+aJueWHhiBGQVEg5paH56ug6K+35rGC55qE576k57uE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdGQVHmlofnq6DnmoTljoblj7Lkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ+WcqOWfuuS6jkZBUeaWh+eroOeahOW3peWNleS4reWMheWQq+WGhemDqOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ+WcqOWfuuS6jkZBUeaWh+eroOeahOW3peWNleS4reWMheWQq+avj+S4quWtl+auteeahOWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+W/q+mAn+aQnOe0ouaXtuaYvuekuueahOeVjOmdoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn5pel5b+XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfnrqHnkIbor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICfnrqHnkIbor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICfkuLrlu7rnq4vlhbPplK7lrZdGQVHmlofnq6DliJfooajnmoTmkJzntKLpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn6ZO+5o6l5a+56LGh5Yiw6L+Z5LiqRkFR5p2h55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAn5ZCv55So55u45YWz5paH56ug5Yqf6IO955qE6Zif5YiX5ZCN56ew5YiX6KGo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4reiDveWkn+S9v+eUqOeahOeKtuaAgeexu+Wei+WIl+ihqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkuK3og73lpJ/kvb/nlKjnmoTnirbmgIHnsbvlnovliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouS4reiDveWkn+S9v+eUqOeahOeKtuaAgeexu+Wei+WIl+ihqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAn5YWs5YWx55WM6Z2i55qE5Yqg6L295qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jEZBUea1j+iniOWZqOiDveWkn+aYvuekukZBUeaWh+eroOeahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajog73lpJ/mmL7npLpGQVHmlofnq6DnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouS4re+8jEZBUea1j+iniOWZqOiDveWkn+aYvuekukZBUeaWh+eroOeahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5pel5b+X6IO95aSf5pi+56S6RkFR5paH56ug55qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c6IO95aSf5pi+56S655qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c6IO95aSf5pi+56S655qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOiDveWkn+aYvuekuueahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jEZBUea1j+iniOWZqOaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUea1j+iniOWZqOaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajmmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHml6Xlv5fop4blm77mmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkuK3vvIznlKjkuo7nroDnn63nmoRGQVHmkJzntKLogIznlJ/miJBIVE1M5byA5pS+5byP5pCc57Si6YWN572u5paH5Lu255qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouS4re+8jOS4uuS8mOWMlkZBUeaQnOe0oueUqOS6jueUn+aIkEhUTUzlvIDmlL7mkJzntKLvvIhPcGVuU2VhcmNo77yJ6YWN572u55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOeUqOS6jueugOefreeahEZBUeaQnOe0ouiAjOeUn+aIkEhUTUzlvIDmlL7lvI/mkJzntKLphY3nva7mlofku7bnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ+WIm+W7ukZBUeaWh+eroOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfmlrDlu7rnmoRGQVHmlofnq6DlnKjlj5HluIPkuYvliY3pnIDopoHlrqHmibnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo6KeG5Zu+5pi+56S655qERkFR5paH56ug5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajop4blm77mmL7npLrnmoRGQVHmlofnq6DmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c5q+P6aG15pi+56S655qERkFR5paH56ug5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5Pmnpzmr4/pobXmmL7npLrnmoRGQVHmlofnq6DmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfmmL7npLrmnIDov5Hmm7TmlLnmnaHnm67nmoTmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfmmL7npLrmnIDmlrDliJvlu7rmnaHnm67nmoTmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfmjIlUb3AxMOagvOW8j+aYvuekuueahOadoeebruaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAn5re75YqgSmF2YXNjcmlwdOWIsOWuouaIt+W3peWNlea2iOaBr+eql+WPo+eahOi+k+WHuui/h+a7pOWZqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICfnm7jlhbNGQVHmlofnq6DnmoTovpPlh7rpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn5pi+56S6RkFR5p2h55uu55qE5b6u5Z6LRkFR5pel5b+X5qaC6KeI55qE6aG16Z2i5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICfmmL7npLpGQVHmnaHnm67nmoRGQVHmpoLop4jnroDmtIHop4blm77nmoTpobXpnaLlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICfmiZPljbDov5nnr4dGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICflhazlvIBGQVHmiZPljbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ+WFrOW8gEZBUeivpuaDheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICflhazlvIBGQVHmkJzntKLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICflhazlvIBGQVHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn5a6h5om5IEZBUSDmlofnq6DnmoTpmJ/liJfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICflpb3or4TnjocsIOmUruWAvOW/hemhu+S7peeZvuWIhuavlOihqOekuuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAn566A5rSBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfmkJzntKJGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICfmkJzntKJGQVHvvIjnroDmtIHmoLzlvI/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICfmkJzntKJGQVHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+mAieaLqeacn+WIiuamguiniO+8iOeugOa0geagvOW8j++8ieS4rem7mOiupOeahOaYvuekuuadoeebruaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ+mAieaLqeamguiniO+8iOeugOa0geagvOW8j++8ieS4rem7mOiupOeahOaYvuekuuadoeebruaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICflnKjigJ1BZ2VudEZBUVpvb23igJzkuK3vvIzorr7nva7lhoXnva5IVE1M5a2X5q6155qE6buY6K6k6auY5bqm77yI5Y2V5L2N77ya5YOP57Sg77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAn5Zyo5a6i5oi3RkFR6K+m5oOF5ZKM5YWs5byARkFR6K+m5oOF5Lit77yM6K6+572u5YaF572uSFRNTOWtl+auteeahOm7mOiupOmrmOW6pu+8iOaMieWDj+e0oO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZhGQVHor6bmg4XkuK3vvIzorr7nva7lhoXnva5IVE1M5a2X5q6155qE5pyA5aSn6auY5bqm77yI5oyJ5YOP57Sg77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAn5Zyo5a6i5oi3RkFR6K+m5oOF5ZKM5YWs5byARkFR6K+m5oOF5Lit77yM6K6+572u5YaF572uSFRNTOWtl+auteeahOacgOWkp+mrmOW6pu+8iOaMieWDj+e0oO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ+WvueS6juWFrOW8gOeahEZBUeaWh+eroO+8jOWcqOacjeWKoeS6uuWRmEZBUeivpuaDheeql+WPo+S4reaYvuekuuKAnOaPkuWFpUZBUemTvuaOpeKAneaMiemSruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICflr7nkuo7lhazlvIDnmoRGQVHmlofnq6DvvIzlnKjmnI3liqHkurrlkZhGQVHor6bmg4Xnqpflj6PkuK3mmL7npLrigJzmj5LlhaVGQVHmlofmnKzlkozpk77mjqXigJ0v4oCc5o+S5YWl5a6M5pW0RkFR5ZKM6ZO+5o6l4oCd5oyJ6ZKu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZhGQVHor6bmg4Xnqpflj6PkuK3mmL7npLrigJzmj5LlhaVGQVHmlofmnKzigJ0v4oCc5o+S5YWl5a6M5pW0RkFR4oCd5oyJ6ZKu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ+S7pSBIVE1MIOagvOW8j+aYvuekuiBGQVEg5paH56ug44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ+aYry/lkKbmmL7npLogRkFRIOi3r+W+hOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqEZBUea1j+iniOWZqOe7k+aenOS4reaYvuekuuaXoOaViOadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn5pi+56S65a2Q55uu5b2V55qE5p2h55uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOWumuS5ieeahOeVjOmdouS4iuaYvuekuuacgOi/keabtOaUueeahOadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5Zyo5a6a5LmJ55qE55WM6Z2i5LiK5pi+56S65pyA5paw5Yib5bu655qE5p2h55uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAn5pi+56S65pif57qn5aSn5LqO5oiW562J5LqO5a6a5LmJ5YC855qE5paH56ug77yI6K6+572u5YC8XCcwXCfku6XnpoHnlKjovpPlh7rvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOWumuS5ieeahOeVjOmdouS4iuaYvuekuueCueWHu+mHj+WJjeWNgeS4quadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5Zyo5a6a5LmJ55qE55WM6Z2i5LiK5pi+56S65paH56ug6K+E5YiG44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yM5Zyo6K+lRkFR6K+m5oOF56qX5Y+j6I+c5Y2V5Lit5pi+56S65YWB6K645bCGRkFR6ZO+5o6l5Yiw5Y+m5LiA5Liq5a+56LGh55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yM5Zyo6K+lRkFR55qE6K+m5oOF56qX5Y+j6I+c5Y2V5Lit5pi+56S65YWB6K645Yig6ZmkRkFR55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yM5Zyo6K+lRkFR55qE6K+m5oOF56qX5Y+j6I+c5Y2V5Lit5pi+56S66K6/6ZeuRkFR5Y6G5Y+y55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIzlnKjor6VGQVHnmoTor6bmg4Xnqpflj6Poj5zljZXkuK3mmL7npLrnvJbovpFGQVHnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeeahOivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuWQjumAgOeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoueahOivpuaDheeql+WPo+iPnOWNleS4re+8jOaYvuekuuaJk+WNsEZBUeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ+ino+WGs+aWueahiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAn55eH54q2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ+S7heaWh+acrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICfnm7jlhbNGQVHmlofnq6DnmoTpu5jorqTor63oqIDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRkFRIOeahOagh+ivhuespiwg5L6L5aaCICjluLjop4Hpl67popjop6PnrZQpRkFRIywgKOefpeivhuW6kylLQiMsIOm7mOiupOS4uiBGQVEj44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+ivpeiuvue9ruWumuS5ieS6huS4gOS4quiDvemAmui/h+KAnOaZrumAmu+8iE5vcm1hbO+8ieKAneeahOmTvuaOpeexu+Wei+S4juWFtuS7lkZBUeWvueixoei/nuaOpeeahEZBUeWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+ivpeiuvue9ruWumuS5ieS6huS4gOS4quiDvemAmui/h+KAnOeItuWtkO+8iFBhcmVudENoaWxk77yJ4oCd55qE6ZO+5o6l57G75Z6L5LiO5YW25LuWRkFR5a+56LGh6L+e5o6l55qERkFR5a+56LGh44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+ivpeiuvue9ruWumuS5ieS6huS4gOS4quiDvemAmui/h+KAnOaZrumAmu+8iE5vcm1hbO+8ieKAneeahOmTvuaOpeexu+Wei+S4juWFtuS7luW3peWNleWvueixoei/nuaOpeeahEZBUeWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ+ivpeiuvue9ruWumuS5ieS6huS4gOS4quiDvemAmui/h+KAnOeItuWtkO+8iFBhcmVudENoaWxk77yJ4oCd55qE6ZO+5o6l57G75Z6L5LiO5YW25LuW5bel5Y2V5a+56LGh6L+e5o6l55qERkFR5a+56LGh44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVEg5paH56ug5a6h5om56K+35rGC55qE5bel5Y2V5q2j5paH44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVEg5paH56ug5a6h5om56K+35rGC55qE5bel5Y2V5qCH6aKY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICflv6vmjbfplK7nmoTlt6XlhbfmoI/mnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+WklumDqCjnlKjmiLcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICflhoXpg6go5pyN5Yqh5Lq65ZGYKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICflhazlvIAo5YaF5aSWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICflhazlvIDvvIjlhazlvIDvvIknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfmt7vliqDluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfpl5zpjbXlrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfnm67pjITliIbpoZ7ngrrlv4XpoIjnmoQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5a+p5om5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+W4uOimi+WVj+mhjOebrumMhOWIhumhnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+a3u+WKoOebrumMhOWIhumhnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfmt7vliqDnm67pjITliIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ+e3qOi8r+ebrumMhOWIhumhnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+iri+mBuOaTh+iHs+WwkeS4gOWAi+asiumZkOe1hOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn5Y+v5Lul5a2Y5Y+W5q2k55uu6YyE5YiG6aGe5paH56ug55qE5pyN5YuZ5ZOh57WE5Yil44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICflnKjngI/opr3lmajkuK3lsIfmnIPpoa/npLrngrroqZXoqIDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ+aCqOeiuuWumuimgeWIqumZpOatpOebrumMhOWIhumhnu+8nyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ+aCqOeEoeazleWIqumZpOatpOebrumMhOWIhumhnuOAguiHs+Wwkeiiq+S4gOevh+W4uOimi+WVj+mhjOaWh+eroOWcqOatpOebrumMhOWIhumhnuWFp++8jOWPii/miJblroPmmK/oh7PlsJHkuIDlgIvlhbbku5bnm67pjITliIbpoZ7mmK/lroPnmoTmr43nm67pjITliIbpoZ7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICfku6XkuIvnmoTluLjopovllY/poYzmlofnq6Dkvb/nlKjmraTnm67poZ7liIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn5Lul5LiL55uu6YyE5YiG6aGe5piv5q2k55uu6YyE5YiG6aGe55qE5a2Q55uu6YyE5YiG6aGeJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+aCqOeiuuWumuimgeWIqumZpOatpOW4uOimi+WVj+mhjOaWh+eroO+8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfluLjopovllY/poYwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ+aOoue0ouW4uOimi+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICflv6vpgJ/mkJzlsIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ+WuueioseS9v+eUqOmAmumFjeespuiZn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfpgLLpmo7mkJzlsIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+WtkOebrumMhOWIhumhnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICfluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfmspLmnInmib7liLDlrZDnm67pjITliIbpoZ7jgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ+att+WPsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfmspLmnInmib7liLDluLjopovllY/poYzml6Xoqozmlbjmk5rjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ+a3u+WKoOiqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfmt7vliqDoqp7oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+e3qOi8r+iqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn5oKo56K65a6a6KaB5Yiq6Zmk5q2k6Kqe6KiA77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+aCqOeEoeazleWIqumZpOatpOiqnuiogOOAguWug+iiq+iHs+WwkeS4gOevh+W4uOimi+WVj+mhjOaWh+eroOS9v+eUqOS4reOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+S7peS4i+W4uOimi+WVj+mhjOaWh+eroOato+S9v+eUqOatpOebrumMhOWIhumhnic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+S4iuS4i+aWh+ioree9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfluLjopovllY/poYzmlofnq6Av6aCBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ+aykuacieaJvuWIsOW4uOimi+WVj+mhjOaVuOaTmuOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ+mXnOmNteWtlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn5oqV56WoICjkvovvvJrnrYnmlrwxMOaIluWkp+aWvDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICfoqZXliIYgKOS+i++8muetieaWvDI1JeaIluWkp+aWvDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICflt7LpgJrpgY7lr6nmibknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA5b6M5L+u5pS55pa8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5Ym15bu65pmC6ZaTICjkuYvliY0v5LmL5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICfluLjopovllY/poYzmlofnq6DlibXlu7rmmYLplpMo5LmL6ZaTKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOabtOaWsOaZgumWkyjkuYvliY0v5LmL5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfluLjopovllY/poYzmlofnq6Dmm7TmlrDmmYLplpMo5LmL6ZaTKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICfluLjopovllY/poYzlhajmloflhaflrrknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICfluLjopovllY/poYzmkJzlsIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfmqpTmoYjos4fmlpnpgbjpoIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ+aKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn5rKS5pyJ5oqV56Wo6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn5oyH5a6a6YG456WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ+S+i++8muetieaWvDEw5oiW5aSn5pa8NjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ+ipleWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn5rKS5pyJ6KmV5YiG6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfmjIflrproqZXliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfkvovvvJrnrYnmlrwyNSXmiJblpKfmlrw3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICfluLjopovllY/poYzmlofnq6DlibXlu7rmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICfluLjopovllY/poYzmlofnq6Dnt6jovK/mmYLplpMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn5bi46KaL5ZWP6aGM6LOH6KiKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ipleWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ+mBuOelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfmspLmnInmib7liLDpgbjnpajvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5LiL6LyJ6ZmE5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn5rKS5pyJ5bmr5YqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ+W+iOacieW5q+WKqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAn5re75Yqg5bi46KaL5ZWP6aGM5qiZ6aGM5Yiw5paH56ug5qiZ6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ+aPkuWFpeW4uOimi+WVj+mhjOaWh+Wtlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfmj5LlhaXlhajpg6jluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn5o+S5YWl5bi46KaL5ZWP6aGM6YCj57WQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfmj5LlhaXluLjopovllY/poYzmloflrZflj4rpgKPntZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ+aPkuWFpeWFqOmDqOW4uOimi+WVj+mhjOWPiumAo+e1kCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ+aykuacieaJvuWIsOW4uOimi+WVj+mhjOaWh+eroOOAgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOWFqOaWh+aqoue0oiAo5L6L77yaIkpvaG4qbiIg5oiWICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAn5oqV56Wo6ZmQ5Yi25qKd5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICflj6rmmK/mnInooqvmipXpgbjnmoTluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICfoqZXliIbpmZDliLbmop3ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAn5Y+q5piv5pyJ6KmV5YiG55qE5bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn5pmC6ZaT5p+l6Kmi5qKd5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICflj6rmmK/lt7LlibXlu7rnmoTluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn5Y+q5piv5bi46KaL5ZWP6aGM5paH56ug5Ym15bu65pa8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ+aWh+eroOe3qOiZnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ+eUqOmXnOmNteWtl+aQnOWwi+aWh+eroCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICflhazplosnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ+WbnuWIsOW4uOimi+WVj+mhjOeAj+imveWZqCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ+ebrumMhOWIhumhnuW/hemgiOacieWQjeeosSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ+atpOebrumMhOWIhumhnuW3sue2k+WtmOWcqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn5bi46KaL5ZWP6aGM55uu6YyE5YiG6aGe5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn5bi46KaL5ZWP6aGM55uu6YyE5YiG6aGe5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfliKrpmaTnm67pjITliIbpoZ4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ+W4uOimi+WVj+mhjOaXpeiqjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICflkI3nqLHngrrlv4XpoIjnmoQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn5q2k6Kqe6KiA5bey5a2Y5ZyoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfliKrpmaToqp7oqIAgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ+e1kOaenCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ+acgOW+jOabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICfluLjopovllY/poYzli5XmhYvmrITkvY0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn5rKS5pyJ57WQ5p6cISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn5bi46KaL5ZWP6aGM57eo6JmfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn5oSf6Kyd5oKo55qE5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+aCqOW3see2k+aKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfmspLmnInpgbjlj5boqZXliIYhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfluLjopovllY/poYzmlofnq6DliJfljbAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfluLjopovllY/poYzmlofnq6AgKOaWsOa3u+WKoCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroCAo5pyA6L+R5pu05pawKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfluLjopovllY/poYzmlofnq6AgKOmmljEw56+HKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICfmraTmlofnq6Dngrrnqbrnmb0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOi/kea3u+WKoOeahOW4uOimi+WVj+mhjOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5Hmm7TmlrDluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ+mmljEw56+H5bi46KaL5ZWP6aGM5paH56ugJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn5YWn6YOo55qEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOo55qEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+WFrOmWi+eahCc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RPQk8gaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfpgbjnpajntZDmnpzkvb/nlKjnmoRDU1Mg6aGP6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICfpm6LplovluLjopovllY/poYzpoIXnm67nmoTnt6nlrZjmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+ebrumMhOWIhumhnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfpgbjnpajntZDmnpzlsI/mlbjkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+m7mOioseebrumMhOWIhumhnuWQjeeosSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn5Zau5LiA6Kqe6KiA5qih5byP5LiL55qE5bi46KaL5ZWP6aGM5paH56ug6buY6Kix6Kqe6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ+m7mOioseW4uOimi+WVj+mhjOaWh+eroOaomemhjOmhr+ekuueahOacgOWkp+WAvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICfnrYnlvoXlr6nmibnluLjopovllY/poYzmlofnq6Dlt6Xllq7poJDoqK3lhKrlhYjlgLwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ+W4uOimi+WVj+mhjOaineebrumgkOioreeLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn562J5b6F5a+p5om55bi46KaL5ZWP6aGM5paH56ug55qE5bel5Zau6buY6Kix54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+etieW+heWvqeaJueW4uOimi+WVj+mhjOaWh+eroOeahOW3peWWrum7mOiosemhnuWIpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ+ioreWumumhr+ekuuW4uOimi+WVj+mhjOaXpeiqjOWwj+aqoumWseaooeW8j+eahOamguazgeaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfoqK3lrprpoa/npLrluLjopovllY/poYzliJfooajlsI/mqqLplrHmqKHlvI/nmoTmpoLms4HmqKHntYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICfoqK3lrpogXCfmj5LlhaXluLjopovllY/poYxcJyDpoa/npLrkvY3nva4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+WIqumZpOatpOW4uOimi+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn57eo6Lyv5q2k5bi46KaL5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICfllZPnlKjluLjopovllY/poYzmqKHntYTlpJrnqK7oqp7oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAn5ZWT55So5bi46KaL5ZWP6aGM5qih57WE5oqV56Wo5qmf5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn54CP6Ka95ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn5bi46KaL5ZWP6aGM5pel6KqM5qaC5rOBICLlsI8iIOaooeW8j+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ+W4uOimi+WVj+mhjOamguazgSAi5bCPIuaooeW8j+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAn5qyE5L2NNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICfmrITkvY01JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOWvqeaJueeUqOaItue1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAn5q2k5bi46KaL5ZWP6aGM5q235Y+yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfluLjopovllY/poYzngrrmnKznmoTlt6Xllq7ljIXlkKvnmoTlhafpg6jmrITkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfluLjopovllY/poYzngrrmnKznmoTlt6Xllq7ljIXlkKvnmoTmr4/kuIDmrITkvY3lkI3nqLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfpoa/npLrlv6vpgJ/mkJzlsIvnmoTku4vpnaInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ+aXpeiqjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn6Kqe6KiA566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+mAo+e1kOWFtuS7lueJqeS7tuWIsOatpOW4uOimi+WVj+mhjOeJqeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3li5nlk6Hku4vpnaLlj6/kvb/nlKjnmoTni4DmhYvliIbpoZ7liJfooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi25LuL6Z2i5Y+v5L2/55So55qE54uA5oWL5YiG6aGe5YiX6KGoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazplovku4vpnaLlj6/kvb/nlKjnmoTni4DmhYvliIbpoZ7liJfooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3li5nlk6Hku4vpnaLlj6/poa/npLrmlrzluLjopovllY/poYzngI/opr3lmajntZDmnpznmoTluLjopovllY/poYzmlofnq6DmnIDlpJrmlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi25LuL6Z2i5Y+v6aGv56S65pa85bi46KaL5ZWP6aGM54CP6Ka95Zmo57WQ5p6c55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazplovku4vpnaLlj6/poa/npLrmlrzluLjopovllY/poYzngI/opr3lmajntZDmnpznmoTluLjopovllY/poYzmlofnq6DmnIDlpKfmlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWLmeWToeS7i+mdouWPr+mhr+ekuuaWvOW4uOimi+WVj+mhjOaXpeiqjOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWLmeWToeS7i+mdouWPr+mhr+ekuuaWvOaQnOWwi+e1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaItuS7i+mdouWPr+mhr+ekuuaWvOaQnOWwi+e1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazplovku4vpnaLlj6/poa/npLrmlrzmkJzlsIvntZDmnpznmoTluLjopovllY/poYzmlofnq6DmnIDlpKfmlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfmlrDluLjopovllY/poYzmlofnq6DnmbzkvYjliY3pnIDopoHntpPpgY7lr6nmibknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfmnIDov5Hmm7TmlrDpoa/npLrpoIXnm67mlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfmnIDov5HlibXlu7rpoa/npLrpoIXnm67mlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfpppYxMOevh+WKn+iDvemhr+ekuumgheebruaVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+WIl+WNsOatpOW4uOimi+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfluLjopovllY/poYzmlofnq6Dlr6nmibnkvYfliJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfmipXnpajoqZXliIbjgILmlbjlgLzlv4XpoIjngrrnmb7liIbnjofjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAn5pCc5bCL5bi46KaL5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn6Kit5a6a5ZyoQWdlbnRGQVFab29t5Lit5YWn5bWMSFRNTOashOS9jem7mOiosemrmOW6piAo5YOP57SgKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+ioreWumuWcqEN1c3RvbWVyRkFRWm9vbSAo5Y+KUHVibGljRkFRWm9vbSnkuK3lhafltYxIVE1M5qyE5L2N6buY6Kix6auY5bqmICjlg4/ntKApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfku6VIVE1M5qC85byP6aGv56S65bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ+mhr+ekuuW4uOimi+WVj+mhjOi3r+W+kSAo5pivL+WQpiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+mhr+ekuuWtkOebrumMhOWIhumhnumgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfpoa/npLrmjIflrprku4vpnaLnmoTmnIDov5Hmm7TmlrDpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+mhr+ekuuaMh+WumuS7i+mdoueahOacgOi/keWJteW7uumgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn6aGv56S65oyH5a6a5LuL6Z2i55qE6aaWMTDlgIvpoIXnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+mhr+ekuuaMh+WumuS7i+mdoueahOaKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfop6PmsbrmlrnmoYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICflpJbpg6ggKOWuouaItiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ+WFp+mDqCAo5pyN5YuZ5ZOhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICflhazplosgICjlhajpg6gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlLgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKSB8fCAnJzsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuLgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFBlcm1pc3Npb24gY2hlY2suCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBwYXJhbWV0ZXJzIGZyb20gd2ViIHJlcXVlc3QuCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgcXcoVGl0bGUgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVmFsaWRJRCBLZXl3b3JkcyBBcHByb3ZlZCBGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBHZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMuCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIuCiAgICBpZiAoCiAgICAgICAgISRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcwogICAgICAgIHx8IHJlZiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgbmUgJ0hBU0gnCiAgICAgICAgfHwgISV7JFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgR2V0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvcm0gaHR0cCByZXF1ZXN0LgogICAgbXkgJUR5bmFtaWNGaWVsZFZhbHVlczsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3JtIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICBteSAkRm9ybUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKICAgIGlmICggISRGb3JtSUQgKSB7CiAgICAgICAgJEZvcm1JRCA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgY29udGVudCB0eXBlCiAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgJENvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7CiAgICB9CgogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTaG93IHRoZSBGQVEgYWRkIHNjcmVlbi4KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBDcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMuCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIEdldCBmaWVsZCBIVE1MLgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgIyBHZXQgQXBwcm92YWwgcXVldWUgbmFtZS4KICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICcnOwoKICAgICAgICAgICAgIyBDaGVjayBpZiBBcHByb3ZhbCBxdWV1ZSBleGlzdHMuCiAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgUXVldWUgPT4gJEFwcHJvdmFsUXVldWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gIkZBUSBBcHByb3ZhbCBpcyBlbmFibGVkIGJ1dCBxdWV1ZSAnJEFwcHJvdmFsUXVldWUnIGRvZXMgbm90IGV4aXN0cyIsCiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXN0ZW1Db25maWd1cmF0aW9uO1N1YmFjdGlvbj1WaWV3Q3VzdG9tR3JvdXA7TmFtZXM9RkFROjpBcHByb3ZhbFF1ZXVlJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICBVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKCiAgICAgICAgICAgICMgTGFzdCB2aWV3ZWQgY2F0ZWdvcnkgZnJvbSBzZXNzaW9uICh3cml0dGVuIGJ5IEZBUSBleHBsb3JlcikuCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRTZWxmLT57TGFzdFZpZXdlZENhdGVnb3J5fSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTYXZlIHRoZSBGQVEuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoVGl0bGUgQ2F0ZWdvcnlJRCkpIHsKCiAgICAgICAgICAgICMgSWYgcmVxdWlyZWQgZmllbGQgaXMgbm90IGdpdmVuLCBhZGQgc2VydmVyIGVycm9yIGNsYXNzLgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpTZXJ2aWNlJykgKSB7CiAgICAgICAgICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAgICAgICAgICMgZ2V0IGFsbCBzZXJ2aWNlcwogICAgICAgICAgICBteSAlU2VydmljZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgICAgIEtlZXBDaGlsZHJlbiA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZTo6S2VlcENoaWxkcmVuJykgLy8gMCwKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBTZXJ2aWNlSURzOwogICAgICAgICAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdTZXJ2aWNlSUQnICkgKSB7CiAgICAgICAgICAgICAgICBAU2VydmljZUlEcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdTZXJ2aWNlSUQnICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEdldFBhcmFte1NlcnZpY2VJRH0gCT0gXEBTZXJ2aWNlSURzOwogICAgICAgICAgICAkR2V0UGFyYW17U2VydmljZUxpc3R9IAk9IFwlU2VydmljZUxpc3Q7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcy4KICAgICAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkVmFsaWRhdGlvblJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICVzIScsCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFByb3BhZ2F0ZSB2YWxpZGF0aW9uIGVycm9yIHRvIHRoZSBFcnJvciB2YXJpYWJsZSB0byBiZSBkZXRlY3RlZCBieSB0aGUgZnJvbnRlbmQuCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IGZpZWxkIEhUTUwuCiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gIHx8ICcnLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAnJywKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFNlbmQgc2VydmVyIGVycm9yIGlmIGFueSByZXF1aXJlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZy4KICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIEdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhLgogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cy4KICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRBcHByb3ZhbFF1ZXVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICAgICAgICAgIGlmICggISRBcHByb3ZhbFF1ZXVlSUQgKSB7CiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZm8gPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZG1pblN5c3RlbUNvbmZpZ3VyYXRpb247U3ViYWN0aW9uPVZpZXdDdXN0b21Hcm91cDtOYW1lcz1GQVE6OkFwcHJvdmFsUXVldWUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAgICAgVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgbmV3IEZBUSBpdGVtLgogICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTaG93IGVycm9yIGlmIEZBUSBpdGVtIGNvdWxkIG5vdCBiZSBhZGRlZC4KICAgICAgICBpZiAoICEkSXRlbUlEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBhdHRhY2htZW50cyBmcm9tIHVwbG9hZCBjYWNoZS4KICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBXcml0ZSBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewoKICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgdGhhdCBpdCBpcyBpbmxpbmUuCiAgICAgICAgICAgICAgICAkSW5saW5lID0gMTsKCiAgICAgICAgICAgICAgICAjIFJlbWVtYmVyIGlmIHRoaXMgaW5saW5lIGF0dGFjaG1lbnQgaXMgdXNlZCBpbiBhbnkgRkFRIGFydGljbGUuCiAgICAgICAgICAgICAgICBteSAkQ29udGVudElERm91bmQ7CgogICAgICAgICAgICAgICAgIyBDaGVjayBhbGwgZmllbGRzIGZvciBjb250ZW50LWlkLgogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gJEdldFBhcmFteyAnRmllbGQnIC4gJE51bWJlciB9OwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgZmllbGRzLgogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZDsKCiAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGZpZWxkcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBjb250ZW50LWlkLgogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgJEZpZWxkICF+IG17ICRBdHRhY2htZW50LT57Q29udGVudElEfSB9eG1zOwoKICAgICAgICAgICAgICAgICAgICAkQ29udGVudElERm91bmQgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRklFTEQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBXZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaC10ZXh0IGVkaXRvcgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkQ29udGVudElERm91bmQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGaWxlSUQgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJElubGluZTsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgUmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzLgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgaW5saW5lIGltYWdlIFVSTHMgZm9yIEZBUSBJdGVtIyAnJEl0ZW1JRCchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUuCiAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CgogICAgICAgICMgU2V0IGR5bmFtaWMgZmllbGRzLgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBSZWRpcmVjdCB0byBGQVEgem9vbS4KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEl0ZW1JRCApOwogICAgfQp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIEdldCBsaXN0IHR5cGUuCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBHZXQgdmFsaWQgbGlzdC4KICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgbXkgJURhdGE7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEJ1aWxkIHZhbGlkIHNlbGVjdGlvbi4KICAgICREYXRhe1ZhbGlkT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgU2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0LgogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgQnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uLgogICAgJERhdGF7Q2F0ZWdvcnlPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc30sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplICcgLiAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgR2V0IHRoZSBzZWxlY3RlZCBsYW5ndWFnZS4KICAgIG15ICRTZWxlY3RlZExhbmd1YWdlOwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CgogICAgICAgICMgR2V0IGxhbmd1YWdlIGZyb20gZ2l2ZW4gTGFuZ3VhZ2VJRC4KICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJwogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX0gfHwgJ2VuJzsKCiAgICAgICAgIyBHZXQgdXNlciBMYW5ndWFnZUlECiAgICAgICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgTGFuZHVhZ2VJRCBkb2VzIG5vdCBleGlzdHMKICAgICAgICBpZiAoICEkU2VsZWN0ZWRMYW5ndWFnZUlEICkgewoKICAgICAgICAgICAgIyBHZXQgdGhlIGxvd2VzdCBsYW5ndWFnZUlEIGZyb20gdGhlIEZBUSBsYW5ndWFnZXMgbGlzdAogICAgICAgICAgICBteSBATGFuZ3VhZ2VJRHMgPSBzb3J0IGtleXMgJUxhbmd1YWdlczsKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRMYW5ndWFnZUlEc1swXTsKCiAgICAgICAgICAgICMgU2V0IHRoZSBsYW5ndWFnZSB3aXRoIGxvd2VzdCBMYW5ndWFnZUlEIGFzIHNlbGVjdGVkIGxhbmd1YWdlLAogICAgICAgICAgICAjICAgYXMgdGhpcyBpcyB0aGUgZmlyc3QgYW5kICh3ZSBhc3N1bWVkKSB0aGUgbW9zdCB1c2VkIGxhbmd1YWdlCiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3skU2VsZWN0ZWRMYW5ndWFnZUlEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBCdWlsZCB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uLgogICAgJERhdGF7TGFuZ3VhZ2VPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdMYW5ndWFnZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSBAU3RhdGVUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpOwogICAgbXkgJVN0YXRlcyAgICAgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVHlwZXMgID0+IEBTdGF0ZVR5cGVzLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgR2V0IHRoZSBzZWxlY3RlZCBzdGF0ZS4KICAgIG15ICRTZWxlY3RlZFN0YXRlOwogICAgaWYgKCAkUGFyYW17U3RhdGVJRH0gJiYgJFN0YXRlc3sgJFBhcmFte1N0YXRlSUR9IH0gKSB7CgogICAgICAgICMgR2V0IHN0YXRlIGZyb20gZ2l2ZW4gU3RhdGVJRC4KICAgICAgICAkU2VsZWN0ZWRTdGF0ZSA9ICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgR2V0IGRlZmF1bHQgc3RhdGUuCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6U3RhdGUnKSB8fCAnaW50ZXJuYWwgKGFnZW50KSc7CiAgICB9CgogICAgIyBCdWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uLgogICAgJERhdGF7U3RhdGVPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdTdGF0ZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFN0YXRlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIFNob3cgYXR0YWNobWVudHMuCiAgICBBVFRBQ0hNRU5UOgogICAgbXkgQEF0dGFjaG1lbnRMaXN0OwogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAjIERvIG5vdCBzaG93IGlubGluZSBpbWFnZXMgYXMgYXR0YWNobWVudHMgKHRoZXkgaGF2ZSBhIENvbnRlbnRJRCkuCiAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgIHB1c2ggQHsgJFBhcmFte0F0dGFjaG1lbnRMaXN0fSB9LCAkQXR0YWNobWVudDsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFBZGQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvdyBzZXJ2aWNlcwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6U2VydmljZScpICkgewogICAgICAgICMgZ2V0IGFsbCBzZXJ2aWNlcwogICAgICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgICAgICBLZWVwQ2hpbGRyZW4gPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2U6OktlZXBDaGlsZHJlbicpIC8vIDAsCiAgICAgICAgICAgIFZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgICAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgICAgIG15IEBTZXJ2aWNlSURzOwogICAgICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1NlcnZpY2VJRCcgKSApIHsKICAgICAgICAgICAgQFNlcnZpY2VJRHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnU2VydmljZUlEJyApOwogICAgICAgIH0KCiAgICAgICAgIyBCdWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uLgogICAgICAgIG15ICRTZXJ2aWNlSFRNTCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVNlcnZpY2VMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgID0+IDEwLAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiBcQFNlcnZpY2VJRHMsCiAgICAgICAgICAgIFNvcnQgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgICAgIFRyZWVWaWV3ICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZU9wdGlvbiA9PiAkU2VydmljZUhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cgbGFuZ3VhZ2VzIGZpZWxkLgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgR2V0IGRlZmF1bHQgbGFuZ3VhZ2UuCiAgICAgICAgbXkgJERlZmF1bHRMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpEZWZhdWx0OjpMYW5ndWFnZScpIHx8ICdlbic7CgogICAgICAgICMgR2V0IGRlZmF1bHQgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgIE5hbWUgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBkZWZhdWx0IGxhbmd1YWdlIGlmIGl0IHdhcyBkZWxldGVkIG9yIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgbXkgJEluc2VydExhbmd1YWdlID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEluc2VydExhbmd1YWdlICkgewoKICAgICAgICAgICAgICAgICMgUmV0dXJuIHdpdGggZXJyb3Igc2NyZWVuLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEdldCBkZWZhdWx0IExhbmd1YWdlSUQuCiAgICAgICAgICAgICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZhdWx0TGFuZ3VhZ2UsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17TGFuZ3VhZ2VJRH0gPSAkTGFuZ3VhZ2VJRDsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBTaG93IGFwcHJvdmFsIGZpZWxkLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAjIENoZWNrIHBlcm1pc3Npb24uCiAgICAgICAgbXkgJUdyb3VwcyA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgdGhlIEZBUSBhcHByb3ZhbCBncm91cCBmcm9tIGNvbmZpZy4KICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJykgfHwgJyc7CgogICAgICAgICMgQnVpbGQgdGhlIGFwcHJvdmFsIHNlbGVjdGlvbiBpZiB1c2VyIGlzIGluIHRoZSBhcHByb3ZhbCBncm91cC4KICAgICAgICBpZiAoICRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewoKICAgICAgICAgICAgJERhdGF7QXBwcm92YWxPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17QXBwcm92ZWR9IHx8IDAsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZS4KICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgQWRkIHJpY2ggdGV4dCBlZGl0b3IgSmF2YVNjcmlwdCBvbmx5IGlmIGFjdGl2YXRlZCBhbmQgdGhlIGJyb3dzZXIgY2FuIGhhbmRsZSBpdAogICAgIyAgIG90aGVyd2lzZSBqdXN0IGEgdGV4dC1hcmVhIGlzIHNob3duCiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CgogICAgICAgICMgVXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbi4KICAgICAgICAkUGFyYW17UmljaFRleHRIZWlnaHR9ID0gJENvbmZpZy0+e1JpY2hUZXh0SGVpZ2h0fSB8fCAwOwogICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkQ29uZmlnLT57UmljaFRleHRXaWR0aH0gIHx8IDA7CgogICAgICAgICMgU2V0IHVwIHJpY2ggdGV4dCBlZGl0b3IuCiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncy4KICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiBAU3RhdGVUeXBlcywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIFNob3cgRkFRIENvbnRlbnQuCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIER5bmFtaWMgZmllbGRzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgU2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQuCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICApOwoKICAgICAgICAjIEdldCB0aGUgSFRNTCBzdHJpbmdzIGZvcm0gJFBhcmFtLgogICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgRXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQWRkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFDYXRlZ29yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEIE5hbWUgUGFyZW50SUQgQ29tbWVudCBWYWxpZElEKSkgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgIH0KCiAgICAjIFNldCBkZWZhdWx0cwogICAgJEdldFBhcmFte0NhdGVnb3J5SUR9IHx8PSAwOwogICAgJEdldFBhcmFte1BhcmVudElEfSAgIHx8PSAwOwoKICAgICMgR2V0IGFycmF5IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgIEB7ICRHZXRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSB9ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Hcm91cHMnICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIENoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CgogICAgICAgIGlmICggISRHZXRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIENhdGVnb3J5SUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBwZXJtaXNzaW9uIGdyb3Vwcy4KICAgICAgICAkQ2F0ZWdvcnlEYXRhe1Blcm1pc3Npb25Hcm91cHN9ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBDaGFuZ2UgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhcmVudElEIFZhbGlkSUQpKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTmVlZCAlcyEnLCAkUGFyYW1OYW1lICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE5hbWUgQ29tbWVudCBQZXJtaXNzaW9uR3JvdXBzKSkgewoKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgQWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcy4KICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CgogICAgICAgICAgICAgICAgIyBBZGQgc2VydmVyIGVycm9yIHN0cmluZyBmb3IgY2F0ZWdvcnkgbmFtZSBmaWVsZC4KICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeS4KICAgICAgICAgICAgbXkgJENhdGVnb3J5RXhpc3RzQWxyZWFkeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkR2V0UGFyYW17UGFyZW50SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5KSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIHdyb25nLgogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgIG15ICRDYXRlZ29yeVVwZGF0ZVN1Y2Nlc3NmdWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENhdGVnb3J5VXBkYXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07Tm90aWZpY2F0aW9uPVVwZGF0ZSIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgKSB7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0FkZCcsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZCBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIENoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMuCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhcmVudElEIFZhbGlkSUQpKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzIScsICRQYXJhbU5hbWUgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIElmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbi4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgQWRkIHZhbGlkYXRpb24gY2xhc3MgYW5kIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcy4KICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CgogICAgICAgICAgICAgICAgIyBBZGQgc2VydmVyIGVycm9yIHN0cmluZyBmb3IgY2F0ZWdvcnkgbmFtZSBmaWVsZC4KICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeQogICAgICAgICAgICBteSAkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRHZXRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRDYXRlZ29yeUV4aXN0c0FscmVhZHkpIHsKICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIG1pc3Npbmcgb3Igd3JvbmcKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIEhUTUwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCBuZXcgY2F0ZWdvcnkuCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07Tm90aWZpY2F0aW9uPUFkZCIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgKSB7CgogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5SUQnICkgfHwgJyc7CiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDYXRlZ29yeUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYWxsIGFmZmVjdGVkIEZBUSBhcnRpY2xlcwogICAgICAgIG15IEBBZmZlY3RlZEl0ZW1zID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiBbJENhdGVnb3J5SURdLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgR2V0IGFsbCBhZmZlY3RlZCBTdWJDY2F0ZWdvcmllcy4KICAgICAgICBteSAkQWZmZWN0ZWRTdWJDYXRlZ29yaWVzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vLgogICAgICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgICAgICMgRGlzcGxheSBsaXN0IG9mIGFmZmVjdGVkIEZBUSBhcnRpY2xlcyBvciBTdWJDYXRlZ29yaWVzLgogICAgICAgIGlmICggQEFmZmVjdGVkSXRlbXMgfHwgQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9LLgogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgRGlzcGxheSBBZmZlY3RlZCBGQVEgYXJ0aWNsZXMuCiAgICAgICAgICAgIGlmIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIElURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEaXNwbGF5IEFmZmVjdGVkIFN1YmNhdGVnb3JpZXMuCiAgICAgICAgICAgIGlmICggQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICAgICAjIEdldCBjYXRlZ29yaWVzIGxvbmcgbmFtZXMuCiAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIEB7JEFmZmVjdGVkU3ViQ2F0ZWdvcmllc30gKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBTZXQgY2F0ZWdvcnkgbG9uZyBuYW1lLgogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeURhdGF7TG9uZ05hbWV9ID0gJENhdGVnb3J5TG9uZ05hbWVzLT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISVDYXRlZ29yeURhdGE7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0FmZmVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgQnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlLgogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBSZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUuCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAnJzsKCiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDYXRlZ29yeUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSBjYXRlZ29yeS4KICAgICAgICBteSAkQ291bGREZWxldGVDYXRlZ29yeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ2F0ZWdvcnkpIHsKCiAgICAgICAgICAgICMgUmVkaXJlY3QgdG8gZXhwbG9yZXIsIHdoZW4gdGhlIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsLgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnkiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgU2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgT3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICBteSAkTm90aWZpY2F0aW9uICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOb3RpZmljYXRpb24nICkgfHwgJyc7CiAgICAgICAgbXkgJU5vdGlmaWNhdGlvblRleHQgPSAoCiAgICAgICAgICAgIFVwZGF0ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBjYXRlZ29yeSB1cGRhdGVkIScpLAogICAgICAgICAgICBBZGQgICAgPT4gVHJhbnNsYXRhYmxlKCdGQVEgY2F0ZWdvcnkgYWRkZWQhJyksCiAgICAgICAgKTsKICAgICAgICBpZiAoICROb3RpZmljYXRpb24gJiYgJE5vdGlmaWNhdGlvblRleHR7JE5vdGlmaWNhdGlvbn0gKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KCBJbmZvID0+ICROb3RpZmljYXRpb25UZXh0eyROb3RpZmljYXRpb259ICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9FZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkxpc3QnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgbXkgJURhdGE7CgogICAgIyBCdWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uLgogICAgJERhdGF7VmFsaWRPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgID0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtWYWxpZElEfSB8fCAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgYWxsIHZhbGlkIGdyb3Vwcy4KICAgIG15ICVHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMaXN0KAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgU2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0LgogICAgJFBhcmFte1Blcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgQnVpbGQgdGhlIGdyb3VwIHNlbGVjdGlvbi4KICAgICREYXRhe0dyb3VwT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlR3JvdXBzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdQZXJtaXNzaW9uR3JvdXBzJywKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkIE1vZGVybml6ZSAnIC4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvcn0sCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHN9LAogICAgKTsKCiAgICAjIEdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMuCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgQnVpbGQgdGhlIGNhdGVnb3J5IHNlbGVjdGlvbi4KICAgICREYXRhe0NhdGVnb3J5T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgID0+ICRDYXRlZ29yeVRyZWUsCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1BhcmVudElEJywKICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17UGFyZW50SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgRGlzYWJsZWRCcmFuY2ggPT4gJENhdGVnb3J5VHJlZS0+eyAkUGFyYW17Q2F0ZWdvcnlJRH0gfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1VwZGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnQ2hhbmdlJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRWRpdCcsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJBZGQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfT3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0ID0gJyc7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkFkZCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIEdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMuCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIElmIHRoZXJlIGFyZSBhbnkgY2F0ZWdvcmllcywgdGhleSBhcmUgc2hvd24uCiAgICBpZiAoICRDYXRlZ29yeVRyZWUgJiYgcmVmICRDYXRlZ29yeVRyZWUgZXEgJ0hBU0gnICYmICV7JENhdGVnb3J5VHJlZX0gKSB7CgogICAgICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgICAgICMgU29ydCB0aGUgY2F0ZWdvcnkgaWRzIGJ5IHRoZSBsb25nIGNhdGVnb3J5IG5hbWUuCiAgICAgICAgbXkgQENhdGVnb3J5SURzU29ydGVkID0gc29ydCB7ICRDYXRlZ29yeVRyZWUtPnskYX0gY21wICRDYXRlZ29yeVRyZWUtPnskYn0gfSBrZXlzICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgIG15ICVKU0RhdGE7CgogICAgICAgICMgU2hvdyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDYXRlZ29yeUlEc1NvcnRlZCkgewoKICAgICAgICAgICAgIyBDcmVhdGUgc3RydWN0dXJlIGZvciBKUy4KICAgICAgICAgICAgJEpTRGF0YXskQ2F0ZWdvcnlJRH0gPSB7CiAgICAgICAgICAgICAgICBFbGVtZW50SUQgICAgICAgICAgICAgICAgICA9PiAnRGVsZXRlQ2F0ZWdvcnlJRCcgLiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIEVsZW1lbnRTZWxlY3RvciAgICAgICAgICAgID0+ICcjRGVsZXRlQ2F0ZWdvcnlJRCcgLiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIERpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZyAgID0+ICdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249RGVsZXRlO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmcgPT4gJ0FjdGlvbj1BZ2VudEZBUUNhdGVnb3J5O1N1YmFjdGlvbj1EZWxldGVBY3Rpb247Q2F0ZWdvcnlJRD0nCiAgICAgICAgICAgICAgICAgICAgLiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRlIENhdGVnb3J5JyksCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIEdldCBjYXRlZ29yeSBkYXRhLgogICAgICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCB2YWxpZCBzdHJpbmcgYmFzZWQgb24gVmFsaWRJRC4KICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkQ2F0ZWdvcnlEYXRhe1ZhbGlkSUR9IH07CgogICAgICAgICAgICAjIE92ZXJ3cml0ZSB0aGUgbmFtZSB3aXRoIHRoZSBsb25nIG5hbWUuCiAgICAgICAgICAgICRDYXRlZ29yeURhdGF7TmFtZX0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBPdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEuCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVFEYXRhJywKICAgICAgICAgICAgVmFsdWUgPT4gXCVKU0RhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFEZWxldGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFBlcm1pc3Npb24gY2hlY2suCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIEdldCBuZWVkZWQgSXRlbUlECiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgQ2hlY2sgdXNlciBwZXJtaXNzaW9uLgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBUeXBlICAgICAgID0+ICdydycsCiAgICApOwogICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlJyApIHsKCiAgICAgICAgIyBEZWxldGUgdGhlIEZBUSBhcnRpY2xlLgogICAgICAgIG15ICRDb3VsZERlbGV0ZUl0ZW0gPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVJdGVtKSB7CgogICAgICAgICAgICAjIFJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bC4KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JEZBUURhdGF7Q2F0ZWdvcnlJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgU2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIFNldCB0aGUgZGlhbG9nIHR5cGUuIEFzIGRlZmF1bHQsIHRoZSBkaWFsb2cgd2lsbCBoYXZlIDIgYnV0dG9uczogWWVzIGFuZCBOby4KICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgQnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlLgogICAgbXkgJURhdGEgPSAoCiAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICApOwoKICAgICMgUmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlLgogICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBHZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZS4KICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbi4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSd30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBHZXQgcGFyYW1ldGVycyBmcm9tIHdlYiByZXF1ZXN0LgogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KEl0ZW1JRCBUaXRsZSBDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBWYWxpZElEIEtleXdvcmRzIEFwcHJvdmVkIEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KQogICAgICAgICkKICAgIHsKICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICB9CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiMgRkFRIFNlcnZpY2UgIyBUT0RPCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBDaGVjayB1c2VyIHBlcm1pc3Npb24uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3J3JywKICAgICk7CiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvcm0gd2ViIHJlcXVlc3QuCiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIEV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZm9ybSB0aGUgd2ViIHJlcXVlc3QuCiAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwogICAgfQoKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgbXkgJEZvcm1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CiAgICBpZiAoICEkRm9ybUlEICkgewogICAgICAgICRGb3JtSUQgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICMgR2V0IHNjcmVlbiB0eXBlLgogICAgbXkgJFNjcmVlblR5cGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAnJzsKCiAgICBteSAkUXVldWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNob3cgdGhlIEZBUSBlZGl0IHNjcmVlbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICBteSAkT3V0cHV0OwoKICAgICAgICAjIFNob3cgYSBwb3AtdXAgc2NyZWVuLgogICAgICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKCiAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0U21hbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBTaG93IGEgbm9ybWFsIHdpbmRvdy4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0Tm9ybWFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cyAod2l0aG91dCBpbmxpbmUgYXR0YWNobWVudHMpLgogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgQ29weSBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMgdG8gdXBsb2FkIGNhY2hlLgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgR2V0IHRoZSBleGlzdGluZyBhdHRhY2htZW50IGRhdGEuCiAgICAgICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgY29udGVudCBkaXNwb3NpdGlvbiAoaWYgaXRzIGFuIGlubGluZSBhdHRhY2htZW50KS4KICAgICAgICAgICAgbXkgJERpc3Bvc2l0aW9uID0gJEF0dGFjaG1lbnQtPntJbmxpbmV9ID8gJ2lubGluZScgOiAnJzsKCiAgICAgICAgICAgICMgQWRkIGF0dGFjaG1lbnRzIHRvIHRoZSB1cGxvYWQgY2FjaGUuCiAgICAgICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsZXtDb250ZW50fSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRGaWxle0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICREaXNwb3NpdGlvbiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEgZnJvbSB1cGxvYWQgY2FjaGUuCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CgogICAgICAgICMgUmV3cml0ZSBvbGQgc3R5bGUgaW5saW5lIGltYWdlIFVSTHMuCiAgICAgICAgRklFTEQ6CiAgICAgICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CgogICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAgICAgIyBSZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uLCB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLnguCiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgICAgIH17QWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMuCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgVG8gc3RvcmUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIGRhdGFiYXNlIChvciB1bmRlZmluZWQpLgogICAgICAgICAgICBteSAkVmFsdWUgPSAkRkFRRGF0YXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIEdldCBmaWVsZCBIVE1MLgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PgogICAgICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPT0gMiwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAjIENoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cy4KICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2hvdyBub3RpZmljYXRpb24gaWYgQXBwcm92YWwgcXVldWUgZG9lcyBub3QgZXhpc3RzLgogICAgICAgICAgICBpZiAoICEkQXBwcm92YWxRdWV1ZUlEICkgewogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZG1pblN5c3RlbUNvbmZpZ3VyYXRpb247U3ViYWN0aW9uPVZpZXdDdXN0b21Hcm91cDtOYW1lcz1GQVE6OkFwcHJvdmFsUXVldWUnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICBBdHRhY2htZW50cyAgICAgID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgIFNjcmVlblR5cGUgICAgICAgPT4gJFNjcmVlblR5cGUsCiAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiBcJUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkU2NyZWVuVHlwZSBlcSAnUG9wdXAnICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VuZFNtYWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kTm9ybWFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFNhdmUgdGhlIEZBUQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE91dHB1dDsKCiAgICAgICAgIyBTaG93IGEgcG9wLXVwIHNjcmVlbi4KICAgICAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CiAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0U21hbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBTaG93IGEgbm9ybWFsIHdpbmRvdy4KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFRpdGxlIENhdGVnb3J5SUQpKSB7CgogICAgICAgICAgICAjIElmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbiwgYWRkIHNlcnZlciBlcnJvciBjbGFzcy4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeyAkUGFyYW1OYW1lIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyAjIENoZWNrIGlmIGFuIGF0dGFjaG1lbnQgbXVzdCBiZSBkZWxldGVkLgogICAgICAgICMgbXkgQEF0dGFjaG1lbnRJRHMgPSBtYXAgewogICAgICAgICMgICAgIG15ICgkSUQpID0gJF8gPX4gbXsgXEEgQXR0YWNobWVudERlbGV0ZSAoXGQrKSBceiB9eG1zOwogICAgICAgICMgICAgICRJRCA/ICRJRCA6ICgpOwogICAgICAgICMgfSAkUGFyYW1PYmplY3QtPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgIyBDT1VOVDoKICAgICAgICAjIGZvciBteSAkQ291bnQgKCByZXZlcnNlIHNvcnQgQEF0dGFjaG1lbnRJRHMgKSB7CgogICAgICAgICMgICAgICMgY2hlY2sgaWYgdGhlIGRlbGV0ZSBidXR0b24gd2FzIHByZXNzZWQgZm9yIHRoaXMgYXR0YWNobWVudAogICAgICAgICMgICAgIG15ICREZWxldGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiQXR0YWNobWVudERlbGV0ZSRDb3VudCIgKTsKCiAgICAgICAgIyAgICAgIyBjaGVjayBuZXh0IGF0dGFjaG1lbnQgaWYgaXQgd2FzIG5vdCBwcmVzc2VkCiAgICAgICAgIyAgICAgbmV4dCBDT1VOVCBpZiAhJERlbGV0ZTsKCiAgICAgICAgIyAgICAgIyByZW1lbWJlciB0aGF0IHdlIG5lZWQgdG8gc2hvdyB0aGUgcGFnZSBhZ2FpbgogICAgICAgICMgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICMgICAgICMgcmVtb3ZlIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICMgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlRmlsZSgKICAgICAgICAjICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgIyAgICAgICAgIEZpbGVJRCA9PiAkQ291bnQsCiAgICAgICAgIyAgICAgKTsKICAgICAgICAjIH0KCiAgICAgICAgIyAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhbiBhdHRhY2htZW50IHVwbG9hZAogICAgICAgICMgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQXR0YWNobWVudFVwbG9hZCcgKSApIHsKCiAgICAgICAgIyAgICAgIyByZW1lbWJlciB0aGF0IHdlIG5lZWQgdG8gc2hvdyB0aGUgcGFnZSBhZ2FpbgogICAgICAgICMgICAgICRFcnJvcntBdHRhY2htZW50fSA9IDE7CgogICAgICAgICMgICAgICMgZ2V0IHRoZSB1cGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgIyAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFBhcmFtT2JqZWN0LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgIyAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgIyAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICAjICAgICApOwoKICAgICAgICAjICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAjICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgIyAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICMgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgIyAgICAgKTsKICAgICAgICAjIH0KCiAgICAgICAgIyBDcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMuCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkVmFsaWRhdGlvblJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICVzIScsCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFByb3BhZ2F0ZSB2YWxpZGF0aW9uIGVycm9yIHRvIHRoZSBFcnJvciB2YXJpYWJsZSB0byBiZSBkZXRlY3RlZCBieSB0aGUgZnJvbnRlbmQuCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IGZpZWxkIEhUTUwuCiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gIHx8ICcnLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAnJywKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFNlbmQgc2VydmVyIGVycm9yIGlmIGFueSByZXF1aXJlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZwogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICMgIyBpZiB0aGVyZSB3YXMgYW4gYXR0YWNobWVudCBkZWxldGUgb3IgdXBsb2FkCiAgICAgICAgICAgICMgIyB3ZSBkbyBub3Qgd2FudCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGZvciBvdGhlciBmaWVsZHMKICAgICAgICAgICAgIyBpZiAoICRFcnJvcntBdHRhY2htZW50fSApIHsKICAgICAgICAgICAgIyAgICAgJUVycm9yID0gKCk7CiAgICAgICAgICAgICMgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cy4KICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRBcHByb3ZhbFF1ZXVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICAgICAgICAgIGlmICggISRBcHByb3ZhbFF1ZXVlSUQgKSB7CiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZm8gPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZG1pblN5c3RlbUNvbmZpZ3VyYXRpb247U3ViYWN0aW9uPVZpZXdDdXN0b21Hcm91cDtOYW1lcz1GQVE6OkFwcHJvdmFsUXVldWUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAgICAgQXR0YWNobWVudHMgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIFNjcmVlblR5cGUgICAgICAgPT4gJFNjcmVlblR5cGUsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VuZFNtYWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdFbmROb3JtYWwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIFNldCB0aGUgY29udGVudCB0eXBlLgogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6U2VydmljZScpICkgewogICAgICAgICAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgICAgICAgICAjIGdldCBhbGwgc2VydmljZXMKICAgICAgICAgICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgICAgICAgICBLZWVwQ2hpbGRyZW4gPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2U6OktlZXBDaGlsZHJlbicpIC8vIDAsCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFNlcnZpY2VJRHM7CiAgICAgICAgICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1NlcnZpY2VJRCcgKSApIHsKICAgICAgICAgICAgICAgIEBTZXJ2aWNlSURzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1NlcnZpY2VJRCcgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkR2V0UGFyYW17U2VydmljZUlEfSAJPSBcQFNlcnZpY2VJRHM7CiAgICAgICAgICAgICRHZXRQYXJhbXtTZXJ2aWNlTGlzdH0gCT0gXCVTZXJ2aWNlTGlzdDsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIHRoZSBuZXcgRkFRIGl0ZW0uCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTaG93IGVycm9yIGlmIEZBUSBpdGVtIGNvdWxkIG5vdCBiZSB1cGRhdGVkLgogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBhdHRhY2htZW50cyBmcm9tIHVwbG9hZCBjYWNoZS4KICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzLgogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgTG9va3VwIG9sZCBpbmxpbmUgYXR0YWNobWVudHMgKGluaXRpYWxseSBsb2FkZWQgdG8gQWdlbnRGQVFFZGl0LnBtIHNjcmVlbikKICAgICAgICAjIGFuZCBwdXNoIHRvIEF0dGFjaG1lbnRzIGFycmF5IGlmIHRoZXkgc3RpbGwgZXhpc3QgaW4gdGhlIGZvcm0uCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRBdHRhY2htZW50LT57SW5saW5lfTsKCiAgICAgICAgICAgIE5VTUJFUjoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRheyAnRmllbGQnIC4gJE51bWJlciB9CiAgICAgICAgICAgICAgICAgICAgPX4gbXsgQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kR2V0UGFyYW17SXRlbUlEfTtGaWxlSUQ9JEF0dGFjaG1lbnQtPntGaWxlSUR9IH1tc3gKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgR2V0IHRoZSBleGlzdGluZyBpbmxpbmUgYXR0YWNobWVudCBkYXRhLgogICAgICAgICAgICAgICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWxle0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxle0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEZpbGV7RmlsZXNpemV9LAogICAgICAgICAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGxhc3QgTlVNQkVSOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEJ1aWxkIGEgbG9va3VwIGhhc2ggb2YgdGhlIG5ldyBhdHRhY2htZW50cy4KICAgICAgICBteSAlTmV3QXR0YWNobWVudDsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBUaGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlLgogICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAjIEFwcGVuZCBjb250ZW50IGlkIGlmIGF2YWlsYWJsZSAoZm9yIG5ldyBpbmxpbmUgaW1hZ2VzKS4KICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gKSB7CiAgICAgICAgICAgICAgICAkS2V5IC49ICRBdHRhY2htZW50LT57Q29udGVudElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEuCiAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cy4KICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAjIFRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemVyYXcgKyBjb250ZW50IHR5cGUgKG5vIGNvbnRlbnQgaWQsIGFzIGV4aXN0aW5nIGF0dGFjaG1lbnRzIGRvbid0IGhhdmUgaXQpLgogICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZVJhd30KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAjIEF0dGFjaG1lbnQgaXMgYWxyZWFkeSBleGlzdGluZywgd2UgY2FuIGRlbGV0ZSBpdCBmcm9tIHRoZSBuZXcgYXR0YWNobWVudCBoYXNoLgogICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoLgogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudC4KICAgICAgICAgICAgICAgIG15ICREZWxldGVTdWNjZXNzZnVsID0gJEZBUU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgV3JpdGUgdGhlIG5ldyBhdHRhY2htZW50cy4KICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHZhbHVlcyAlTmV3QXR0YWNobWVudCApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKSB7CgogICAgICAgICAgICAgICAgIyBSZW1lbWJlciB0aGF0IGl0IGlzIGlubGluZS4KICAgICAgICAgICAgICAgICRJbmxpbmUgPSAxOwoKICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgaWYgdGhpcyBpbmxpbmUgYXR0YWNobWVudCBpcyBhbHJlYWR5IHVzZWQgaW4gYW55IEZBUSBpdGVtLgogICAgICAgICAgICAgICAgbXkgJElubGluZUF0dGFjaG1lbnRGb3VuZDsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGFsbCBmaWVsZHMgZm9yIHRoZSBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICAgICAgICAgIE5VTUJFUjoKICAgICAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICAgICAjIEdldCBGQVEgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gJEdldFBhcmFteyAnRmllbGQnIC4gJE51bWJlciB9OwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgZmllbGRzLgogICAgICAgICAgICAgICAgICAgIG5leHQgTlVNQkVSIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgICAgICMgU2tpcCBpZiB0aGUgZmllbGQgaXMgbm90IG5ldyAoYWRkZWQpIG9yIG9sZCAoaW5pdGlhbGx5IGxvYWRlZCkgaW5saW5lIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGQgIX4gbXsgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9IH14bXMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICF+IG17IEFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH07RmlsZUlEPSRBdHRhY2htZW50LT57RmlsZUlEfSB9eG1zCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTlVNQkVSOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCB0aGUgaW5saW5lIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgJElubGluZUF0dGFjaG1lbnRGb3VuZCA9IDE7CgogICAgICAgICAgICAgICAgICAgICMgV2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAgICAgbGFzdCBOVU1CRVI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBXZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaC10ZXh0IGVkaXRvci4KICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJElubGluZUF0dGFjaG1lbnRGb3VuZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBZGQgYXR0YWNobWVudC4KICAgICAgICAgICAgbXkgJEZpbGVJRCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJElubGluZTsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgUmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzLgogICAgICAgICAgICBteSAkT0sgPSAkRkFRT2JqZWN0LT5GQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJE9LICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgaW5saW5lIGltYWdlIFVSTHMgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgRkFRIEl0ZW0jICckR2V0UGFyYW17SXRlbUlEfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUuCiAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkRm9ybUlEICk7CgogICAgICAgICMgU2V0IGR5bmFtaWMgZmllbGRzLgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIFNldCB0aGUgdmFsdWUuCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpZiB3ZSBuZWVkIHRvIGNsb3NlIGEgcG9wLXVwIHNjcmVlbiBvciBub3QuCiAgICAgICAgaWYgKCAkU2NyZWVuVHlwZSBlcSAnUG9wdXAnICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgIFVSTCA9PiAiQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRHZXRQYXJhbXtJdGVtSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCnN1YiBfTWFza05ldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IGxpc3QgdHlwZS4KICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCB2YWxpZCBzZWxlY3Rpb24uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1ZhbGlkSUR9IHx8ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgR2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzLgogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBTZXQgbm8gc2VydmVyIGVycm9yIGNsYXNzIGFzIGRlZmF1bHQuCiAgICAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSB8fD0gJyc7CgogICAgIyBCdWlsZCBjYXRlZ29yeSBzZWxlY3Rpb24uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2F0ZWdvcnlJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkIE1vZGVybml6ZSAnIC4gJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0sCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgVHJlZVZpZXcgICAgID0+ICRUcmVlVmlldywKICAgICk7CgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEdldCB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UuCiAgICBteSAkU2VsZWN0ZWRMYW5ndWFnZTsKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9ICkgewoKICAgICAgICAjIEdldCBsYW5ndWFnZSBmcm9tIGdpdmVuIExhbmd1YWdlSUQKICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJy4KICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9IHx8ICdlbic7CgogICAgICAgICMgR2V0IHVzZXIgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIExhbmd1YWdlSUQgZG9lcyBub3QgZXhpc3RzLgogICAgICAgIGlmICggISRTZWxlY3RlZExhbmd1YWdlSUQgKSB7CgogICAgICAgICAgICAjIEdldCB0aGUgbG93ZXN0IExhbmd1YWdlSUQgZm9ybSB0aGUgRkFRIGxhbmd1YWdlIGxpc3QgYXMgaXRzIHRoZSBmaXJzdCBhZGRlZCBhbmQKICAgICAgICAgICAgIyAgICh3ZSBhc3N1bWUpIHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZC4KICAgICAgICAgICAgbXkgQExhbmd1YWdlSURzID0gc29ydCBrZXlzICVMYW5ndWFnZXM7CiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkTGFuZ3VhZ2VJRHNbMF07CgogICAgICAgICAgICAjIFNldCB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb3dlc3QgbGFuZ3VhZ2VJRCBhcyBzZWxlY3RlZCBsYW5ndWFnZS4KICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGFuZ3VhZ2VzeyRTZWxlY3RlZExhbmd1YWdlSUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIEJ1aWxkIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24uCiAgICAkRGF0YXtMYW5ndWFnZU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0xhbmd1YWdlSUQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkTGFuZ3VhZ2UsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15IEBTdGF0ZVR5cGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyk7CiAgICBteSAlU3RhdGVzICAgICA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gQFN0YXRlVHlwZXMsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBHZXQgdGhlIHNlbGVjdGVkIHN0YXRlLgogICAgbXkgJFNlbGVjdGVkU3RhdGU7CiAgICBpZiAoICRQYXJhbXtTdGF0ZUlEfSAmJiAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfSApIHsKCiAgICAgICAgIyBHZXQgc3RhdGUgZnJvbSBnaXZlbiBTdGF0ZUlECiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIEdldCBkZWZhdWx0IHN0YXRlLgogICAgICAgICRTZWxlY3RlZFN0YXRlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkRlZmF1bHQ6OlN0YXRlJykgfHwgJ2ludGVybmFsIChhZ2VudCknOwogICAgfQoKICAgICMgQnVpbGQgdGhlIHN0YXRlIHNlbGVjdGlvbi4KICAgICREYXRhe1N0YXRlT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU3RhdGVJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRTdGF0ZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgc2NyZWVuIHR5cGUuCiAgICBteSAkU2NyZWVuVHlwZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTY3JlZW5UeXBlJyApIHx8ICcnOwoKICAgIG15ICRGaWVsZHNldENsYXNzID0gJyc7CiAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CiAgICAgICAgJEZpZWxkc2V0Q2xhc3MgPSAnRml4ZWRMYWJlbCc7CiAgICB9CgogICAgIyBTaG93IGF0dGFjaG1lbnRzLgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKCiAgICAgICAgIyBEbyBub3Qgc2hvdyBpbmxpbmUgaW1hZ2VzIGFzIGF0dGFjaG1lbnRzICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRhY2htZW50TGlzdH0gfSwgJEF0dGFjaG1lbnQ7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIEZpZWxkc2V0Q2xhc3MgPT4gJEZpZWxkc2V0Q2xhc3MsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IHNlcnZpY2VzCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpTZXJ2aWNlJykgKSB7CiAgICAgICAgIyBnZXQgYWxsIHNlcnZpY2VzCiAgICAgICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgICAgIEtlZXBDaGlsZHJlbiA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZTo6S2VlcENoaWxkcmVuJykgLy8gMCwKICAgICAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAgICAgbXkgQFNlcnZpY2VJRHMgPSAkUGFyYW17U2VydmljZUxpc3R9ID8ga2V5cyAleyAkUGFyYW17U2VydmljZUxpc3R9IH0gOiAoKTsKCiAgICAgICAgIyBCdWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uLgogICAgICAgIG15ICRTZXJ2aWNlSFRNTCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVNlcnZpY2VMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgICAgIFNpemUgICAgICAgID0+IDEwLAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiBcQFNlcnZpY2VJRHMsCiAgICAgICAgICAgIFNvcnQgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgICAgIFRyZWVWaWV3ICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZU9wdGlvbiA9PiAkU2VydmljZUhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cgbGFuZ3VhZ2VzIGZpZWxkLgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBTaG93IGFwcHJvdmFsIGZpZWxkLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAjIENoZWNrIHBlcm1pc3Npb24uCiAgICAgICAgbXkgJUdyb3VwcyA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgdGhlIEZBUSBhcHByb3ZhbCBncm91cCBmcm9tIGNvbmZpZy4KICAgICAgICBteSAkQXBwcm92YWxHcm91cCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbEdyb3VwJykgfHwgJyc7CgogICAgICAgICMgQnVpbGQgdGhlIGFwcHJvdmFsIHNlbGVjdGlvbiBpZiB1c2VyIGlzIGluIHRoZSBhcHByb3ZhbCBncm91cC4KICAgICAgICBpZiAoICRHcm91cHN7JEFwcHJvdmFsR3JvdXB9ICkgewoKICAgICAgICAgICAgJERhdGF7QXBwcm92YWxPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcHByb3ZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgMSA9PiAnWWVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92YWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlLgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBBZGQgcmljaCB0ZXh0IGVkaXRvciBKYXZhU2NyaXB0IG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjICAgb3RoZXJ3aXNlIGp1c3QgYSB0ZXh0LWFyZWEgaXMgc2hvd24KICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gJiYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKSApIHsKCiAgICAgICAgIyBVc2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuLgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBTZXQgdXAgcmljaCB0ZXh0IGVkaXRvci4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5TZXRSaWNoVGV4dFBhcmFtZXRlcnMoCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgU2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzLgogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+IEBTdGF0ZVR5cGVzLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgU2hvdyBGQVEgQ29udGVudC4KICAgICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIER5bmFtaWMgZmllbGRzLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIFNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkLgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgdGhlIEhUTUwgc3RyaW5ncyBmb3JtICRQYXJhbQogICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgRXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2NyZWVuVHlwZSBuZSAnUG9wdXAnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdFbmROb3JtYWwnLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2NyZWVuVHlwZSBlcSAnUG9wdXAnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdFbmRTbWFsbCcsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFFZGl0JywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBHZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZS4KICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBjb25maWcgZGF0YS4KICAgIG15ICRTdGFydEhpdCAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgNTAwOwogICAgbXkgJEZpbHRlciAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgIG15ICRWaWV3ICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwogICAgbXkgJFNvcnRCeSAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIEdldCBDYXRlZ29yeUlELgogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgQ2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgIG15ICRDYXRlZ29yeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeScgKSB8fCAnJzsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgVHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnlJRCBmcm9tIGNhdGVnb3J5IG5hbWUgaWYgbm8gQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnkgJiYgISRDYXRlZ29yeUlEICkgewoKICAgICAgICAjIEdldCB0aGUgY2F0ZWdvcnkgdHJlZS4KICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIFJldmVyc2UgdGhlIGhhc2ggZm9yIGVhc3kgbG9va3VwLgogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIEdldCBuYXZpZ2F0aW9uIGJhciBvcHRpb24uCiAgICBteSAkTmF2ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hdicgKSB8fCAnJzsKCiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgU2F2ZSBDYXRlZ29yeUlEIHRvIHNlc3Npb24sIHRvIGJlIHVzZWQgaW4gRkFRIGFkZCBzY3JlZW4uCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0Vmlld2VkQ2F0ZWdvcnknLAogICAgICAgIFZhbHVlICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICk7CgogICAgIyBTdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbiAoZm9yIGJhY2sgbWVudSBhY3Rpb24pIGJ1dCBvbmx5IGlmIHRoZSBGQVEgZXhwbG9yZXIgaXMgbm90IHNob3duIGFzIG92ZXJsYXkuCiAgICBpZiAoICEkTmF2IHx8ICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO1NvcnRCeT0kU29ydEJ5IgogICAgICAgICAgICAuICI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDtOYXY9JE5hdiIKICAgICAgICAgICAgLiAiO09yZGVyQnk9JE9yZGVyQnk7U3RhcnRIaXQ9JFN0YXJ0SGl0IjsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICB9CgogICAgIyBUcnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhLgogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLicsICRDYXRlZ29yeUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIHVzZXIgcGVybWlzc2lvbi4KICAgICAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICAgICApOwogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBHZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeS4KICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAjIFNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncy4KICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBHZXQgYWxsIGl0ZW1zICh2YWxpZCBhbmQgaW52YWxpZCkgaWYgU3lTQ29uZmlnIGlzIHNldC4KICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgQFZhbGlkSURzOwogICAgbXkgJFZhbGlkID0gMTsKICAgIGlmICggJENvbmZpZy0+e1Nob3dJbnZhbGlkRkFRSXRlbXN9ICkgewogICAgICAgIG15ICVWYWxpZExpc3QgPSAkVmFsaWRPYmplY3QtPlZhbGlkTGlzdCgpOwogICAgICAgIEBWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKICAgICAgICAkVmFsaWQgICAgPSAwOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFZhbGlkSURzID0gKCAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKCBWYWxpZCA9PiAndmFsaWQnICkgKTsKICAgIH0KCiAgICAjIENoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzLgogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBTaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkuCiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4KICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDAsCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgPT4gJFZhbGlkLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgT3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhLgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkTmF2LAogICAgICAgICAgICAgICAgICAgICVTdWJDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIE90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZWFyY2ggYWxsIEZBUSBpdGVtcyB3aXRoaW4gdGhlIGdpdmVuIGNhdGVnb3J5LgogICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFskT3JkZXJCeV0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICAgICAgVmFsaWRJRHMgICAgICAgICA9PiBcQFZhbGlkSURzLAogICAgKTsKCiAgICAjIEJ1aWxkIG5lY2Vzc2FyeSBzdHVmZiBmb3IgdGhlIEZBUSBhcnRpY2xlIGxpc3QuCiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRGaWx0ZXIpCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwoKICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRDb25maWctPntTaG93Q29sdW1uc30gKSB7CgogICAgICAgICMgR2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnLgogICAgICAgIG15ICVQb3NzaWJsZUNvbHVtbiA9ICV7ICRDb25maWctPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBHZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bi4KICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBFbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rLgogICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAnTnVtYmVyJzsKICAgICAgICB9CiAgICB9CgogICAgIyBCdWlsZCB0aGUgdGl0bGUgdmFsdWUgKG9uIHRvcCBvZiB0aGUgYXJ0aWNsZSBsaXN0KS4KICAgIG15ICRUaXRsZSA9ICRDYXRlZ29yeURhdGF7TmFtZX0KICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6Um9vdENhdGVnb3J5TmFtZScpCiAgICAgICAgfHwgJyc7CgogICAgIyBCdWlsZCB0aGUgSFRNTCBmb3IgdGhlIGxpc3Qgb2YgRkFRIGFydGljbGVzIGluIHRoZSBnaXZlbiBjYXRlZ29yeS4KICAgIG15ICRGQVFJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5GQVFMaXN0U2hvdygKICAgICAgICBGQVFJRHMgICAgID0+IFxAVmlld2FibGVJdGVtSURzLAogICAgICAgIFRvdGFsICAgICAgPT4gc2NhbGFyIEBWaWV3YWJsZUl0ZW1JRHMsCiAgICAgICAgVmlldyAgICAgICA9PiAkVmlldywKICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgPT4gJExpbmtTb3J0LAogICAgICAgIExpbmtGaWx0ZXIgPT4gJEZpbHRlckxpbmssCgogICAgICAgIFRpdGxlTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdGQVEgQXJ0aWNsZXMnKSwKICAgICAgICBUaXRsZVZhbHVlID0+ICRUaXRsZSwKCiAgICAgICAgTGltaXQgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBGaWx0ZXIgICAgICAgPT4gJEZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rICAgPT4gJEZpbHRlckxpbmssCiAgICAgICAgT3JkZXJCeSAgICAgID0+ICRPcmRlckJ5LAogICAgICAgIFNvcnRCeSAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIFNob3dDb2x1bW5zICA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgIE91dHB1dCAgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgICA9PiAkTmF2LAogICAgICAgIEZBUVRpdGxlU2l6ZSA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICk7CgogICAgIyBTaG93IHRoZSBGQVEgYXJ0aWNsZSBsaXN0LgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGQVFJdGVtTGlzdEhUTUwgPT4gJEZBUUl0ZW1MaXN0SFRNTCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIFNldCBRdWlja1NlYXJjaCBtb2RlLgogICAgbXkgJE1vZGUgPSAnQWdlbnQnOwogICAgaWYgKCAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkTW9kZSA9ICdBZ2VudFNtYWxsJzsKICAgIH0KCiAgICAjIFNob3cgUXVpY2tTZWFyY2guCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICRNb2RlLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgIG15ICVJbmZvQm94UmVzdWx0czsKCiAgICAjIFNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzLgogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJE5hdiwKICAgICAgICApOwogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBTdG9yZSB0aGUgTmV3c0JveFJlc3VsdC4KICAgICAgICAkSW5mb0JveFJlc3VsdHN7JFR5cGV9ID0gJFNob3dPazsKICAgIH0KCiAgICAjIFNob3cgdG9wIHRlbiBhcnRpY2xlcy4KICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIFN0b3JlIHRoZSBOZXdzQm94UmVzdWx0LgogICAgJEluZm9Cb3hSZXN1bHRze1RvcDEwfSA9ICRTaG93T2s7CgogICAgIyBTZXQgdGhlIFNpZGViYXIgd2lkdGguCiAgICBteSAkU2lkZWJhckNsYXNzID0gJ0xhcmdlJzsKCiAgICAjIENoZWNrIGlmIGFsbCBJbmZvQm94ZXMgYXJlIGVtcHR5IGFuZCBoaWRlIHRoZSBTaWRlYmFyLgogICAgaWYgKAogICAgICAgICRJbmZvQm94UmVzdWx0c3tMYXN0Q3JlYXRlfSBlcSAtMQogICAgICAgICYmICRJbmZvQm94UmVzdWx0c3tMYXN0Q2hhbmdlfSBlcSAtMQogICAgICAgICYmICRJbmZvQm94UmVzdWx0c3tUb3AxMH0gZXEgLTEKICAgICAgICApCiAgICB7CiAgICAgICAgJFNpZGViYXJDbGFzcyA9ICdIaWRkZW4nOwogICAgfQoKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkU2lkZWJhckNsYXNzID0gJ01lZGl1bSc7CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICRTaWRlYmFyQ2xhc3MsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICB9CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFIaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBHZXQgbmVlZGVkIEl0ZW1JRAogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIENoZWNrIHVzZXIgcGVybWlzc2lvbi4KICAgIG15ICRQZXJtaXNzaW9uID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgVHlwZSAgICAgICA9PiAncm8nLAogICAgKTsKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5IScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEhpc3RvcnkgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5R2V0KAogICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGZvciBteSAkSGlzdG9yeUVudHJ5ICggQHskSGlzdG9yeX0gKSB7CgogICAgICAgICMgUmVwbGFjZSBJRCB3aXRoIGZ1bGwgdXNlciBuYW1lIG9uIENyZWF0ZWRCeSBrZXkKICAgICAgICBteSAlVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0gPSAiJFVzZXJ7VXNlckxvZ2lufSAoJFVzZXJ7VXNlckZ1bGxuYW1lfSkiOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyRIaXN0b3J5RW50cnl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlICA9PiAnU21hbGwnLAogICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEhpc3RvcnknKSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRSGlzdG9yeScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFKb3VybmFsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgR2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQuCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICBteSAkSm91cm5hbExpbWl0ID0gJENvbmZpZy0+e0pvdXJuYWxMaW1pdH0gfHwgNTAwOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBKb3VybmFsIGVudHJpZXMuCiAgICBteSAkSm91cm5hbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRSm91cm5hbEdldCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKSAvLyBbXTsKCiAgICAjIEZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duLgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAjIEdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZy4KICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICMgR2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAkTmFtZTsKICAgICAgICB9CgogICAgICAgICMgRW5mb3JjZSBGQVEgbnVtYmVyIGNvbHVtbiBzaW5jZSBpcyB0aGUgbGluayBNYXN0ZXJBY3Rpb24gaG9vay4KICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGQVEgSm91cm5hbCcpLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICRPdXRwdXQgLj0gJFNlbGYtPl9GQVFKb3VybmFsU2hvdygKICAgICAgICBKb3VybmFsICAgICAgICAgID0+ICRKb3VybmFsLAogICAgICAgIFRvdGFsICAgICAgICAgICAgPT4gc2NhbGFyIEB7JEpvdXJuYWx9LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgSm91cm5hbCcpLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJEpvdXJuYWxMaW1pdCwKICAgICAgICBTaG93Q29sdW1ucyAgICAgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgSm91cm5hbFRpdGxlU2l6ZSA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUUpvdXJuYWxTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBMb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlLgogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgU2V0IGZyb250ZW5kLgogICAgbXkgJEZyb250ZW5kID0gJ0FnZW50JzsKCiAgICAjIFNldCBkZWZhdWx0IHZpZXcgbW9kZSB0byAnc21hbGwnLgogICAgbXkgJFZpZXcgPSAkUGFyYW17Vmlld30gfHwgJ1NtYWxsJzsKCiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgU3RvcmUgbGF0ZXN0IHZpZXcgbW9kZS4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFZhbHVlICAgICA9PiAkVmlldywKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGcm9udGVuZDo6Sm91cm5hbE92ZXJ2aWV3Jyk7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnKSwKICAgICAgICApOwogICAgfQogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgQ2hlY2sgZm9yIGNvbmZpZyBrZXkuCiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnLCAkVmlldyApLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFN0YXJ0SGl0ID0gaW50KCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwoKICAgICMgR2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQuCiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwoKICAgICMgQ2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiBlbGVtZW50cyBhdmFpbGFibGUsIHNldCBpdCB0byB0aGUgbGFzdCBvdmVydmlldyBwYWdlCiAgICAjICAgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBHZXQgZGF0YSBzZWxlY3Rpb24uCiAgICBteSAlRGF0YTsKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CiAgICBpZiAoICRDb25maWcgJiYgJENvbmZpZy0+eyRHcm91cH0gJiYgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSApIHsKICAgICAgICAlRGF0YSA9ICV7ICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gfTsKICAgIH0KCiAgICAjIFNldCBwYWdlIGxpbWl0IGFuZCBidWlsZCBwYWdlIG5hdmlnYXRpb24uCiAgICBteSAkTGltaXQgICA9ICRQYXJhbXtMaW1pdH0gfHwgMjBfMDAwOwogICAgbXkgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBCdWlsZCBzaG93biBGQVEgYXJ0aWNsZXMgb24gYSBwYWdlLgogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICA9PiBcJURhdGEsCiAgICApOwoKICAgICMgU3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKS4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRQYXJhbXtSZXF1ZXN0ZWRVUkx9LAogICAgKTsKICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFBhcmFte1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgQnVpbGQgbmF2aWdhdGlvbiBiYXIgY29udGVudC4KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgIGZvciBteSAkQmFja2VuZCAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CgogICAgICAgICMgQnVpbGQgbmF2aWdhdGlvbiBiYXIgdmlldyBtb2RlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIEN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQuCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGlmIHBhZ2UgbmF2aWdhdGlvbiBpcyBhdmFpbGFibGUuCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBEb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciBGQVEgaGlzdG9yeSksIGJlY2F1c2UgdGhlCiAgICAgICAgIyAgIHN1Ym1pdCB3aXRoIHBhZ2UgcmVsb2FkIHdpbGwgbm90IHdvcmsgdGhlcmUKICAgICAgICBpZiAoICEkUGFyYW17QUpBWH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXROYXZCYXIgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBWaWV3ID0+ICRWaWV3LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJE91dHB1dFJhdyA9ICRPdXRwdXROYXZCYXI7CgogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBDaGVjayBmb3IgYmFja2VuZCBvYmplY3QuCiAgICBteSAkT2JqZWN0ID0gJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfS0+bmV3KCAleyRTZWxmfSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgUnVuIG1vZHVsZS4KICAgIG15ICRPdXRwdXQgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEZyb250ZW5kICA9PiAkRnJvbnRlbmQsCiAgICAgICAgVGl0bGVTaXplID0+ICRQYXJhbXtKb3VybmFsVGl0bGVTaXplfSwKICAgICk7CgogICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwoKICAgICMgQ3JlYXRlIG92ZXJ2aWV3IG5hdmlnYXRpb24gYmFyLgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgUmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlLgogICAgcmV0dXJuICRPdXRwdXRSYXc7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFMYW5ndWFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUdldFBhcmFtOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICBteSAkRkFRT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBDaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIEdldCB0aGUgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgQ2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVMYW5ndWFnZURhdGEsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBDaGFuZ2UgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlQWN0aW9uJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhMYW5ndWFnZUlEIE5hbWUpKSB7CgogICAgICAgICAgICAjIFN0b3JlIG5lZWRlZCBwYXJhbWV0ZXJzIGluICVHZXRQYXJhbSB0byBtYWtlIGl0IHJlLWxvYWRhYmxlCiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKCiAgICAgICAgICAgICAgICAjIEFkZCB2YWxpZGF0aW9uIGNsYXNzIGFuZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MuCiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwoKICAgICAgICAgICAgICAgICMgQWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQuCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte05hbWV9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgbXkgJExhbmd1YWdlRXhpc3RzQWxyZWFkeSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJEdldFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5KSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzIScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJUVycm9yKSB7CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIHRoZSBsYW5ndWFnZS4KICAgICAgICBteSAkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRMYW5ndWFnZVVwZGF0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtOb3RpZmljYXRpb249VXBkYXRlIiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBHZXQgdGhlIG5ldyBuYW1lLgogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQWRkIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZEFjdGlvbicgJiYgJE11bHRpTGFuZ3VhZ2UgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgR2V0IHRoZSBuYW1lLgogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwoKICAgICAgICBteSAlRXJyb3I7CgogICAgICAgICMgY2hlY2sgZm9yIG5hbWUKICAgICAgICBpZiAoICEkR2V0UGFyYW17TmFtZX0gKSB7CiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBDaGVjayBmb3IgZHVwbGljYXRlIGxhbmd1YWdlIG5hbWUuCiAgICAgICAgICAgIG15ICRMYW5ndWFnZUV4aXN0c0FscmVhZHkgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRHZXRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJExhbmd1YWdlRXhpc3RzQWxyZWFkeSkgewogICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCVFcnJvcikgewogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgbmV3IGxhbmd1YWdlLgogICAgICAgIG15ICRMYW5ndWFnZUFkZFN1Y2Nlc3NmdWwgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJExhbmd1YWdlQWRkU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O05vdGlmaWNhdGlvbj1BZGQiICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIEdldCB0aGUgTGFuZ3VhZ2VJRC4KICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYW5ndWFnZUlEJyApIHx8ICcnOwoKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVMYW5ndWFnZURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgbXkgQEFmZmVjdGVkSXRlbXMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIExhbmd1YWdlSURzID0+IFskTGFuZ3VhZ2VJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vLgogICAgICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgICAgICMgRGlzcGxheSBsaXN0IG9mIGFmZmVjdGVkIEZBUSBhcnRpY2xlcy4KICAgICAgICBpZiAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9LLgogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElURU1JRCBpZiAhJUZBUURhdGE7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTm9BZmZlY3RlZEl0ZW1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgQnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlLgogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBSZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUuCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBHZXQgdGhlIExhbmd1YWdlSUQuCiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFuZ3VhZ2VJRCcgKSB8fCAnJzsKCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBMYW5ndWFnZUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlR2V0KAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElTGFuZ3VhZ2VEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSBsYW5ndWFnZS4KICAgICAgICBteSAkQ291bGREZWxldGVMYW5ndWFnZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRGVsZXRlKAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlTGFuZ3VhZ2UpIHsKCiAgICAgICAgICAgICMgUmVkaXJlY3QgdG8gZXhwbG9yZXIsIHdoZW4gdGhlIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsLgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgU2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgT3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICBteSAkTm90aWZpY2F0aW9uICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOb3RpZmljYXRpb24nICkgfHwgJyc7CiAgICAgICAgbXkgJU5vdGlmaWNhdGlvblRleHQgPSAoCiAgICAgICAgICAgIFVwZGF0ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBsYW5ndWFnZSB1cGRhdGVkIScpLAogICAgICAgICAgICBBZGQgICAgPT4gVHJhbnNsYXRhYmxlKCdGQVEgbGFuZ3VhZ2UgYWRkZWQhJyksCiAgICAgICAgKTsKICAgICAgICBpZiAoICROb3RpZmljYXRpb24gJiYgJE5vdGlmaWNhdGlvblRleHR7JE5vdGlmaWNhdGlvbn0gKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KCBJbmZvID0+ICROb3RpZmljYXRpb25UZXh0eyROb3RpZmljYXRpb259ICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9FZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkxpc3QnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VXBkYXRlJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckVkaXQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyQWRkJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX092ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25BZGQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICVKU0RhdGE7CgogICAgICAgICMgSWYgdGhlcmUgYXJlIGFueSBsYW5ndWFnZXMsIHRoZXkgYXJlIHNob3duLgogICAgICAgIGlmICglTGFuZ3VhZ2VzKSB7CiAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIHNvcnQgeyAkTGFuZ3VhZ2VzeyRhfSBjbXAgJExhbmd1YWdlc3skYn0gfSBrZXlzICVMYW5ndWFnZXMgKSB7CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgc3RydWN0dXJlIGZvciBKUy4KICAgICAgICAgICAgICAgICRKU0RhdGF7JExhbmd1YWdlSUR9ID0gewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRCAgICAgICAgICAgICAgICAgID0+ICdEZWxldGVMYW5ndWFnZUlEJyAuICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRTZWxlY3RvciAgICAgICAgICAgID0+ICcjRGVsZXRlTGFuZ3VhZ2VJRCcgLiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmcgICA9PiAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZTtMYW5ndWFnZUlEPScgLiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyA9PiAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZUFjdGlvbjtMYW5ndWFnZUlEPScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBEaWFsb2dUaXRsZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdEZWxldGUgTGFuZ3VhZ2UgJXMnLAogICAgICAgICAgICAgICAgICAgICAgICAkTGFuZ3VhZ2VzeyRMYW5ndWFnZUlEfSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAjIEdldCBsYW5ndWFnZXMgcmVzdWx0LgogICAgICAgICAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlR2V0KAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslTGFuZ3VhZ2VEYXRhfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdGQVFEYXRhJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFwlSlNEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBPdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkLgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0Rpc2FibGVkJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBDaGVjayB1c2VyIHBlcm1pc3Npb24uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICk7CiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAjIEdldCBsaW5rZWQgb2JqZWN0cy4KICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIEtleSAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEdldCBsaW5rIHR5cGUgbGlzdC4KICAgIG15ICVMaW5rVHlwZUxpc3QgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBHZXQgdGhlIGxpbmsgZGF0YS4KICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJ1NpbXBsZVJhdycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIFByZXBhcmUgZmllbGRzIGRhdGEuCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgTm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZC4KICAgICAgICBuZXh0IEZJRUxEIGlmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgSFRNTCBxdW90aW5nLgogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgR2V0IHVzZXIgaW5mbyAoQ3JlYXRlZEJ5KS4KICAgIG15ICVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlMb2dpbn0gPSAkVXNlckluZm97VXNlckxvZ2lufTsKCiAgICAjIEdldCB1c2VyIGluZm8gKENoYW5nZWRCeSkuCiAgICAlVXNlckluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5TG9naW59ID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIEdlbmVyYXRlIFBERiBvdXRwdXQuCiAgICBteSAkUHJpbnRlZEJ5ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdwcmludGVkIGJ5Jyk7CiAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwogICAgbXkgJVBhZ2U7CgogICAgIyBHZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMuCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQogICAgbXkgJEhlYWRlclJpZ2h0ICA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgbXkgJEhlYWRsaW5lTGVmdCA9ICRIZWFkZXJSaWdodDsKICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICBpZiAoICRGQVFEYXRhe1RpdGxlfSApIHsKICAgICAgICAkSGVhZGxpbmVMZWZ0ID0gJEZBUURhdGF7VGl0bGV9OwogICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgIH0KCiAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgID0gMzA7CiAgICAkUGFnZXtNYXJnaW5SaWdodH0gID0gNDA7CiAgICAkUGFnZXtNYXJnaW5Cb3R0b219ID0gNDA7CiAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgID0gNDA7CiAgICAkUGFnZXtIZWFkZXJSaWdodH0gID0gJEhlYWRlclJpZ2h0OwogICAgJFBhZ2V7Rm9vdGVyTGVmdH0gICA9ICcnOwogICAgJFBhZ2V7UGFnZVRleHR9ICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgJFBhZ2V7UGFnZUNvdW50fSAgICA9IDE7CgogICAgIyBDcmVhdGUgbmV3IFBERiBkb2N1bWVudC4KICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICApOwoKICAgICMgQ3JlYXRlIGZpcnN0IFBERiBwYWdlLgogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIE91dHB1dCB0aXRsZS4KICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIE91dHB1dCAicHJpbnRlZCBieSIuCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckZ1bGxuYW1lfSAuICcgKCcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJFbWFpbH0gLiAnKScKICAgICAgICAgICAgLiAnLCAnIC4gJFRpbWUsCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTQsCiAgICApOwoKICAgICMgT3V0cHV0IEZBUSBpbmZvcm1hdGlvbi4KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICMgT3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcy4KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICAkU2VsZi0+X1BERk91cHV0RkFRQ29udGVudCgKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICAjIE91dHB1dCBsaW5rZWQgb2JqZWN0cy4KICAgIGlmICglTGlua0RhdGEpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIExpbmtEYXRhICAgICA9PiBcJUxpbmtEYXRhLAogICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV8nIC4gJEZBUURhdGF7TnVtYmVyfTsKCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgIG15ICREYXRlVGltZSAgICAgICA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CiAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICBteSAkRCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0RheX0gKTsKICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwoKfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBDcmVhdGUgbGVmdCB0YWJsZS4KICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBMYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZC4KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtMYW5ndWFnZX0gKSwKICAgICAgICB9OwogICAgICAgIHB1c2ggQHskVGFibGVMZWZ0fSwgJFJvdzsKICAgIH0KCiAgICAjIEFwcHJvdmFsIHN0YXRlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICRGQVFEYXRhe0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0FwcHJvdmFsJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7QXBwcm92YWx9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBDcmVhdGUgcmlnaHQgdGFibGUuCiAgICBteSAkVGFibGVSaWdodDsKCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgVm90aW5nIHJvd3MsIGZlYXR1cmUgaXMgZW5hYmxlZC4KICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJFRhYmxlUmlnaHQgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVm90ZXMnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgTGFzdCB1cGRhdGUgcm93LgogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgIyBPdXRwdXQgdGFibGUuCiAgICBQQUdFOgogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgT3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KS4KICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBTdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlLgogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0TGlua2VkT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBMaW5rRGF0YSBMaW5rVHlwZUxpc3QpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSAgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVHlwZUxpc3QgPSAleyAkUGFyYW17TGlua1R5cGVMaXN0fSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGZvciBteSAkTGlua1R5cGVMaW5rRGlyZWN0aW9uICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJXsgJFBhcmFte0xpbmtEYXRhfSB9ICkgewoKICAgICAgICAjIEludmVzdGlnYXRlIGxpbmsgdHlwZSBuYW1lLgogICAgICAgIG15IEBMaW5rRGF0YSAgICAgPSBzcGxpdCBxezo6fSwgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIERlZmluZSBoZWFkbGluZS4KICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkTGlua1R5cGVOYW1lIC4gJzonOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAnJzsKCiAgICAgICAgIyBFeHRyYWN0IG9iamVjdCBsaXN0LgogICAgICAgIG15ICRPYmplY3RMaXN0ID0gJFBhcmFte0xpbmtEYXRhfS0+eyRMaW5rVHlwZUxpbmtEaXJlY3Rpb259OwoKICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE9iamVjdExpc3QtPnskT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSB8fD0gJyc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkSXRlbS0+e1RpdGxlfSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICAgICAkUm93Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBPdXRwdXQgaGVhZGxpbmUuCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGlua2VkIE9iamVjdHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBTZXQgbmV3IHBvc2l0aW9uLgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyBUYWJsZSBwYXJhbXMuCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIE91dHB1dCB0YWJsZS4KICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBPdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLgogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIFN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UuCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBPdXRwdXQgaGVhZGxpbmUuCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIFRhYmxlIHBhcmFtcy4KICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgT3V0cHV0IHRhYmxlLgogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIE91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkuCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgU3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZS4KICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEZBUUR5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJE91dHB1dCA9IDA7CiAgICBteSAlRkFRICAgID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgbXkgJFJvdyA9IDA7CgogICAgIyBHZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZS4KICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUHJpbnQiKS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0LgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnRkFRJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEdlbmVyYXRlIHRhYmxlLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkRkFRe0ZBUUlEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJFZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRWYWx1ZSBlcSAiIjsKCiAgICAgICAgIyBHZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQuCiAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9CiAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkKICAgICAgICAgICAgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICRSb3crKzsKICAgICAgICAkT3V0cHV0ID0gMTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgT3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcy4KICAgIGlmICgkT3V0cHV0KSB7CgogICAgICAgICMgU2V0IG5ldyBwb3NpdGlvbi4KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgT3V0cHV0IGhlYWRsaW5lLAogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRkFRIER5bmFtaWMgRmllbGRzJyksCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgVGFibGUgcGFyYW1zLgogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIE91dHB1dCB0YWJsZS4KICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBPdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLgogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgU3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZS4KICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3VwdXRGQVFDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgR2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bi4KICAgIG15ICVGaWVsZHM7CiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIEdldCBjb25maWcgb2YgRkFRIGZpZWxkLgogICAgICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBTa2lwIG92ZXIgbm90IHNob3duIGZpZWxkcy4KICAgICAgICBuZXh0IEZJRUxEIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgU3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bi4KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICAjIFNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5LgogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgR2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZC4KICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgQ29udmVydCBIVE1MIHRvIEFTQ0lJLgogICAgICAgIG15ICRBc2NpaUZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgU2V0IG5ldyBwb3NpdGlvbi4KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgICAgICMgVHJhbnNsYXRlIHRoZSBmaWVsZCBuYW1lIGFuZCBzdGF0ZS4KICAgICAgICBteSAkRmllbGROYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkU3RhdGVUeXBlRGF0YS0+e05hbWV9ICkKICAgICAgICAgICAgLiAnKSc7CgogICAgICAgICMgT3V0cHV0IGhlYWRsaW5lLgogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgVGFibGUgcGFyYW1zLgogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIE91dHB1dCB0YWJsZS4KICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBPdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLgogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgU3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZS4KICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRTdWJqZWN0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1YmplY3QnICk7CiAgICBteSAkQm9keSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdCb2R5JyApOwoKICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7CiAgICBteSAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmc7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICRTdWJqZWN0IHx8ICRCb2R5ICkgewoKICAgICAgICAjIEdldCB0aGUgbGFuZ3VhZ2UgZnJvbSB0aGUgdXNlciBhbmQgYWRkIHRoZSBkZWZhdWx0IGxhbmd1YWdlcyBmcm9tIHRoZSBjb25maWcuCiAgICAgICAgbXkgJFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzID0gJENvbmZpZy0+eydEZWZhdWx0TGFuZ3VhZ2VzJ30gfHwgW107CgogICAgICAgICMgQ2hlY2sgaWYgdGhlIHVzZXIgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgbXkgJUxvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc0xhbmd1YWdlID0gbWFwIHsgJF8gPT4gMSB9IEB7JFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzfTsKICAgICAgICBpZiAoICEkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzTGFuZ3VhZ2V7ICRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHskUmVsYXRlZEFydGljbGVMYW5ndWFnZXN9LCAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfTsKICAgICAgICB9CgogICAgICAgIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPlJlbGF0ZWRBZ2VudEFydGljbGVMaXN0KAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgIEJvZHkgICAgICA9PiAkQm9keSwKICAgICAgICAgICAgTGFuZ3VhZ2VzID0+ICRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlcywKICAgICAgICAgICAgTGltaXQgICAgID0+ICRDb25maWctPntTaG93TGltaXR9IHx8IDEwLAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggIUBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgKSB7CiAgICAgICAgICAgICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZyA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChAUmVsYXRlZEZBUUFydGljbGVMaXN0KSB7CgogICAgICAgICMgR2VuZXJhdGUgdGhlIGh0bWwgZm9yIHRoZSB3aWRnZXQuCiAgICAgICAgbXkgJEFnZW50UmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgICAgICAgICA9PiBcQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCwKICAgICAgICAgICAgICAgIFJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nID0+ICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZywKICAgICAgICAgICAgICAgIFZvdGVTdGFyc1Zpc2libGUgICAgICAgICAgICAgID0+ICRDb25maWctPntWb3RlU3RhcnNWaXNpYmxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nID0+ICRBZ2VudFJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcsCiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFSaWNoVGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRLZXkgKHF3KEl0ZW1JRCkpIHsKICAgICAgICAkR2V0UGFyYW17JEtleX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgaWYgKCAhJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vICVzIGlzIGdpdmVuIScsICRLZXkgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRSXRlbSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykgfHwgJ290b2JvLyc7CiAgICBteSAkVVJMUmVnZXggICAgPSAnLycgLiAkU2NyaXB0QWxpYXMgLiAnaW5kZXgucGxcP0FjdGlvbj1BZ2VudEZBUVpvb207JwogICAgICAgIC4gJ1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPScgLiAkR2V0UGFyYW17SXRlbUlEfSAuICc7RmlsZUlEPVswLTldKyc7CiAgICBteSAkRWxlbVJlZ2V4ID0gJ3NyYz0iKCcgLiAkVVJMUmVnZXggLiAnKSInOwoKICAgIG15IEBGaWVsZHM7CgogICAgbXkgJExvYWRlZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgKTsKCiAgICBpZiAoICEkTG9hZGVkICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0IScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRTGFuZ3VhZ2VPYmplY3QgPSBLZXJuZWw6Okxhbmd1YWdlLT5uZXcoCiAgICAgICAgVXNlckxhbmd1YWdlID0+ICRGQVFJdGVte0xhbmd1YWdlfSwKICAgICk7CgogICAgIyBHZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBUaWNrZXQgQ29tcG9zZS4KICAgIG15ICRUaWNrZXRDb21wb3NlQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlRpY2tldENvbXBvc2UnKTsKCiAgICBteSAkSW50ZXJuYWxTdGF0ZVR5cGUgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgbXkgJEludGVybmFsU3RhdGVJRCA9ICRJbnRlcm5hbFN0YXRlVHlwZS0+e1N0YXRlSUR9OwoKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgbXkgJEZvcm1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CiAgICBpZiAoICEkRm9ybUlEICkgewogICAgICAgICRGb3JtSUQgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBEb24ndCB3YXN0ZSBhbnkgZnVydGhlciBwcm9jZXNzaW5nIHBvd2VyLCBpZiB0aGUgY3VycmVudCBmaWVsZCBkb2Vzbid0IGhhdmUgYW55IGNvbnRlbnQuCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUUl0ZW17ICdGaWVsZCcgLiAkRmllbGQgfTsKCiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRGQVFJdGVteyAnRmllbGQnIC4gJEZpZWxkIH07CgogICAgICAgICMgR2V0IGNvbmZpZyBvZiBjdXJyZW50IEZBUSBmaWVsZCBmcm9tIFN5c0NvbmZpZy4KICAgICAgICBteSAkRmllbGRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICRGaWVsZCApOwoKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb25maWc7CiAgICAgICAgbmV4dCBGSUVMRCBpZiByZWYgJEZpZWxkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb25maWctPntTaG93fTsKCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRDb25maWctPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGN1cnJlbnQgZmllbGQgaXMgaW50ZXJuYWwuCiAgICAgICAgbXkgJElzSW50ZXJuYWw7CiAgICAgICAgaWYgKCAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9ID09ICRJbnRlcm5hbFN0YXRlSUQgKSB7CiAgICAgICAgICAgICRJc0ludGVybmFsID0gMTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBmaWVsZCBzaG91bGQgYmUgdmlzaWJsZSB0byB0aGUgcHVibGljLCB0aHVzIGJlIGluc2VydGVkIGludG8gYQogICAgICAgICMgICByZXNwb25zZSB0byBhIGN1c3RvbWVyIG9yIG5vdC4KICAgICAgICBpZiAoICEkVGlja2V0Q29tcG9zZUNvbmZpZy0+e0luY2x1ZGVJbnRlcm5hbH0gJiYgJElzSW50ZXJuYWwgKSB7CiAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgfQoKICAgICAgICAjIEV4dHJhY3QgYWxsIFVSTHMgd2hpY2ggcG9pbnQgdG8gYW4gZW1iZWRkZWQgaW1hZ2UuCiAgICAgICAgbXkgQE1hdGNoZWRVUkxzID0gKCAkRmllbGRDb250ZW50ID1+IG17JEVsZW1SZWdleH14Z21zICk7CiAgICAgICAgZm9yIG15ICRVUkwgKEBNYXRjaGVkVVJMcykgewoKICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSBJRCBvZiB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAoJEZpbGVJRCkgPSAkVVJMID1+IG17IEZpbGVJRD0oWzAtOV0rKSB9bXN4OwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZpbGVJRDogJEZpbGVJRCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEdldCB0aGUgYXR0YWNobWVudCB0byB3aGljaCB0aGUgY3VycmVudCBVUkwgcG9pbnRzLgogICAgICAgICAgICBteSAlQXR0YWNobWVudCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEZpbGVJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudE1ldGEgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZpbGVuYW1lVG1wICAgID0gJEF0dGFjaG1lbnR7RmlsZW5hbWV9OwogICAgICAgICAgICBteSAkU3VmZml4VG1wICAgICAgPSAwOwogICAgICAgICAgICBteSAkVW5pcXVlRmlsZW5hbWUgPSAnJzsKCiAgICAgICAgICAgICMgQ3JlYXRlIG5vdyBhbiBhcnRpY2xlIGF0dGFjaG1lbnQgKGlubGluZSkgYmFzZWQgb24gdGhlIGRhdGEgb2YgJUF0dGFjaG1lbnQgKEZBUSkuCiAgICAgICAgICAgIGlmICglQXR0YWNobWVudCkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgICAgICAgICAgICAgIHdoaWxlICggISRVbmlxdWVGaWxlbmFtZSApIHsKICAgICAgICAgICAgICAgICAgICAkVW5pcXVlRmlsZW5hbWUgPSAkRmlsZW5hbWVUbXA7CiAgICAgICAgICAgICAgICAgICAgTkVXTkFNRToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCByZXZlcnNlIEBBdHRhY2htZW50TWV0YSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBORVdOQU1FIGlmICRGaWxlbmFtZVRtcCBuZSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgTmFtZSBleGlzdHMgLT4gY2hhbmdlLgogICAgICAgICAgICAgICAgICAgICAgICArKyRTdWZmaXhUbXA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnR7RmlsZW5hbWV9ID1+IG17XEEgKC4qKSBcLiAoLis/KSBcen1tc3ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmlsZW5hbWVUbXAgPSAiJDEtJFN1ZmZpeFRtcC4kMiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmlsZW5hbWVUbXAgPSAiJEF0dGFjaG1lbnR7RmlsZW5hbWV9LSRTdWZmaXhUbXAiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRVbmlxdWVGaWxlbmFtZSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IE5FV05BTUU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRBdHRhY2htZW50e0ZpbGVuYW1lfSA9ICRGaWxlbmFtZVRtcDsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudHtDb250ZW50SUR9OwoKICAgICAgICAgICAgICAgICMgQWRkIHRoZSBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUgb2YgdGhlIGN1cnJlbnQgdGlja2V0LgogICAgICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgICAgICAgICAgICAgJUF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGRuXCd0IGdldCBGQVEgYXR0YWNobWVudCAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIihJdGVtSUQ6ICRHZXRQYXJhbXtJdGVtSUR9LCBGaWxlSUQ6ICRGaWxlSUQpISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IG5ldyBDb250ZW50SUQKICAgICAgICAgICAgbXkgJENvbnRlbnRJRE5ldyA9ICcnOwogICAgICAgICAgICBAQXR0YWNobWVudE1ldGEgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudE1ldGEpIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAkRmlsZW5hbWVUbXAgbmUgJEF0dGFjaG1lbnQtPntGaWxlbmFtZX07CiAgICAgICAgICAgICAgICAkQ29udGVudElETmV3ID0gJEF0dGFjaG1lbnQtPntDb250ZW50SUR9OwogICAgICAgICAgICAgICAgbGFzdCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRDb250ZW50SUROZXcgZXEgJycgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZG4ndCBkZXRlcm1pbmUgYSBuZXcgQ29udGVudElEISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgYWN0dWFsIE1JTUUgdHlwZSBmcm9tIHRoZSBjb250ZW50IHR5cGUsIHdoaWNoIGFsc28gY29udGFpbnMgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICBteSAoJE1pbWVUeXBlKSA9ICRBdHRhY2htZW50e0NvbnRlbnRUeXBlfSA9fiBte14oLisvLispOyBbIF0gbmFtZT0uKyR9eG1zOwoKICAgICAgICAgICAgbXkgJFNlc3Npb24gPSAnJzsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAgICAgICAgICRTZXNzaW9uID0gJyYnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ3JlYXRlIHRoZSBuZXcgaW5saW5lIGltYWdlIFVSTC4KICAgICAgICAgICAgbXkgJElubGluZUltYWdlID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVBpY3R1cmVVcGxvYWQ7Rm9ybUlEPSRGb3JtSUQ7Q29udGVudElEPSRDb250ZW50SUROZXckU2Vzc2lvbiI7CgogICAgICAgICAgICAjIFJlcGxhY2UgdGhlIGltYWdlIFVSTCB3aXRoIHRoZSBpbmxpbmUgaW1hZ2UuCiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3tcUSRVUkxcRX17JElubGluZUltYWdlfXhtczsKICAgICAgICB9CgogICAgICAgICMgQWRkIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBoZWFkZXIuCiAgICAgICAgaWYgKCAkRmllbGRDb25maWctPntDYXB0aW9ufSAmJiAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e1Nob3dGaWVsZE5hbWVzfSApIHsKCiAgICAgICAgICAgICMgVHJhbnNsYXRlIHRoZSBjYXB0aW9uIHRvIHRoZSBsYW5ndWFnZSBvZiB0aGUgRkFRIGl0ZW0uCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkQ2FwdGlvbiA9ICRGQVFMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRmllbGRDb25maWctPntDYXB0aW9ufSApOwoKICAgICAgICAgICAgaWYgKCRUcmFuc2xhdGVkQ2FwdGlvbikgewogICAgICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICc8aDI+JyAuICRUcmFuc2xhdGVkQ2FwdGlvbiAuICc6PC9oMj4nIC4gJEZpZWxkQ29udGVudDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwdXNoIEBGaWVsZHMsICRGaWVsZENvbnRlbnQ7CiAgICB9CgogICAgbXkgJEZBUUhUTUwgPSBqb2luKCAnPGJyIC8+JywgQEZpZWxkcyApOwoKICAgICMgR2V0IGFsbCBub24taW5saW5lIGF0dGFjaG1lbnRzIG9mIHRoZSBGQVEgaXRlbS4KICAgIG15IEBBdHRhY2htZW50cyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgbXkgQERhdGEgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICk7CgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudERhdGEgKEBBdHRhY2htZW50cykgewoKICAgICAgICBteSAlQXR0YWNobWVudCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVBdHRhY2htZW50KSB7CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgZ3JlcCB7ICRBdHRhY2htZW50e0ZpbGVuYW1lfSBlcSAkXy0+e0ZpbGVuYW1lfSB9IEBEYXRhOwoKICAgICAgICAgICAgIyBBZGQgdGhlIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZSBvZiB0aGUgY3VycmVudCB0aWNrZXQuCiAgICAgICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgJUF0dGFjaG1lbnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGRuXCd0IGdldCBGQVEgYXR0YWNobWVudCAnCiAgICAgICAgICAgICAgICAgICAgLiAiKEl0ZW1JRDogJEdldFBhcmFte0l0ZW1JRH0sIEZpbGVJRDogJEF0dGFjaG1lbnREYXRhLT57RmlsZUlEfSkhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgU2VuZCBhIGxpc3Qgb2YgYXR0YWNobWVudHMgaW4gdGhlIHVwbG9hZCBjYWNoZSBiYWNrIHRvIHRoZSBjbGllbnQgc2lkZSBKYXZhU2NyaXB0IHdoaWNoCiAgICAjICAgcmVuZGVycyB0aGVuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSB1cGxvYWRlZCBhdHRhY2htZW50cy4KICAgIG15IEBUaWNrZXRBdHRhY2htZW50cyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgKTsKCiAgICBteSBARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50czsKCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0JykgKSB7CgogICAgICAgICMgUmVtb3ZlIHRoZSBpbmxpbmUtYXR0YWNobWVudHMgd2hpY2ggc2hvdWxkbid0IGJlIHNob3duIGluIHRoZSByZWd1bGFyIGF0dGFjaG1lbnQgbGlzdC4KICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQFRpY2tldEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gJiYgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ID1+IG17XEEgaW5saW5lfW1zeCApIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBGaWx0ZXJlZFRpY2tldEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBJZiByaWNoLXRleHQgaXMgbm90IGFjdGl2ZSB0aGVuIHNldCBhbHNvIGlubGluZSBhdHRhY2htZW50cyBhcyByZWd1bGFyIGF0dGFjaG1lbnRzLgogICAgICAgIEBGaWx0ZXJlZFRpY2tldEF0dGFjaG1lbnRzID0gQFRpY2tldEF0dGFjaG1lbnRzOwogICAgfQoKICAgIGZvciBteSAkQXR0YWNobWVudCAoQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMpIHsKICAgICAgICAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSA9ICRMYXlvdXRPYmplY3QtPkh1bWFuUmVhZGFibGVEYXRhU2l6ZSgKICAgICAgICAgICAgU2l6ZSA9PiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRKU09OID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RW5jb2RlKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGQVFUaXRsZSAgICAgICAgICA9PiAkRkFRSXRlbXtUaXRsZX0sCiAgICAgICAgICAgIEZBUUNvbnRlbnQgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSggU3RyaW5nID0+ICRGQVFIVE1MICkgfHwgJycsCiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ICAgID0+ICRGQVFIVE1MLAogICAgICAgICAgICBUaWNrZXRBdHRhY2htZW50cyA9PiBcQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMsCiAgICAgICAgICAgIExvY2FsaXphdGlvbiAgICAgID0+IHsKICAgICAgICAgICAgICAgIERlbGV0ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlbGV0ZScpLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEdldCBjb25maWcgZm9yIGZyb250ZW5kLgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBjb25maWcgZnJvbSBjb25zdHJ1Y3Rvci4KICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgIyBHZXQgY29uZmlnIGRhdGEuCiAgICBteSAkU3RhcnRIaXQgICAgPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICBteSAkU2VhcmNoTGltaXQgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDUwMDsKICAgIG15ICRTb3J0QnkgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CiAgICBteSAkUHJvZmlsZSAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICBteSAkU2F2ZVByb2ZpbGUgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgICAgfHwgJyc7CiAgICBteSAkVGFrZUxhc3RTZWFyY2ggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGFrZUxhc3RTZWFyY2gnICkgfHwgJyc7CiAgICBteSAkRXJhc2VUZW1wbGF0ZSAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXJhc2VUZW1wbGF0ZScgKSAgfHwgJyc7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgRkFRIG51bWJlci4KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbC10ZXh0LgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgU2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZS4KICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRQcm9maWxlICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtUYWtlTGFzdFNlYXJjaD0xO1NhdmVQcm9maWxlPTE7UHJvZmlsZT0kUHJvZmlsZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW07CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBMb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkuCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFByb2ZpbGUgKSB8fCAkVGFrZUxhc3RTZWFyY2ggKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKS4KICAgIGVsc2UgewoKICAgICAgICAjIEdldCBzY2FsYXIgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgICAgIHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0gVm90ZVNlYXJjaCBWb3RlU2VhcmNoVHlwZSBSYXRlU2VhcmNoCiAgICAgICAgICAgIFJhdGVTZWFyY2hUeXBlIEFwcHJvdmVkU2VhcmNoCiAgICAgICAgICAgIFRpbWVTZWFyY2hUeXBlIENoYW5nZVRpbWVTZWFyY2hUeXBlCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCBJdGVtQ2hhbmdlVGltZVBvaW50CiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0IEl0ZW1DaGFuZ2VUaW1lU3RhcnREYXkgSXRlbUNoYW5nZVRpbWVTdGFydE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RhcnRZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcCBJdGVtQ2hhbmdlVGltZVN0b3BEYXkgSXRlbUNoYW5nZVRpbWVTdG9wTW9udGgKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdG9wWWVhcgogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYXJyYXkgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtICgKICAgICAgICAgICAgcXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgVmFsaWRJRHMgU3RhdGVJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdC4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoIHByb2ZpbGUuCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGFwcHJvdmVkIG9wdGlvbi4KICAgIGlmICggJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSAmJiAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9IGVxICdZZXMnICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ05vJyApIHsKICAgICAgICAkR2V0UGFyYW17QXBwcm92ZWR9ID0gMDsKICAgIH0KCiAgICAjIEdldCBjcmVhdGUgdGltZSBvcHRpb24uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9IDE7CiAgICB9CgogICAgIyBHZXQgY2hhbmdlIHRpbWUgb3B0aW9uLgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgU2V0IHJlc3VsdCBmb3JtIEVOVi4KICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgU2hvdyByZXN1bHQgc2l0ZS4KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkRXJhc2VUZW1wbGF0ZSApIHsKCiAgICAgICAgIyBGaWxsIHVwIHByb2ZpbGUgbmFtZSAoZS5nLiB3aXRoIGxhc3Qtc2VhcmNoKS4KICAgICAgICBpZiAoICEkUHJvZmlsZSB8fCAhJFNhdmVQcm9maWxlICkgewogICAgICAgICAgICAkUHJvZmlsZSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICAgICAjIFN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giCiAgICAgICAgICAgIC4gIjtQcm9maWxlPSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAuICI7U29ydEJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICI7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTdGFydEhpdCk7CgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBTYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkuCiAgICAgICAgJFNhdmVQcm9maWxlID0gMTsKCiAgICAgICAgIyBSZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMuCiAgICAgICAgaWYgKCAkU2F2ZVByb2ZpbGUgJiYgJFByb2ZpbGUgKSB7CgogICAgICAgICAgICAjIFJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZi4KICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBJbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1ldGVycy4KICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2UgPT4gJ0NoYW5nZVRpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIERvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gLi4uIGFnby4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgV2l0aGluIG5leHQuCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyBXaXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRHluYW1pYyBmaWVsZHMgc2VhcmNoIHBhcmFtZXRlcnMgZm9yIEZBUSBzZWFyY2guCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIEdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMuCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gJUR5bmFtaWNGaWVsZFZhbHVlcyB0byBkaXNjYXJkIHRob3NlIHdoZXJlIHRoZQogICAgICAgICAgICAgICAgIyAgIHZhbHVlIHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIGdldC4KICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKTsKCiAgICAgICAgICAgICAgICAjIEV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZS4KICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXIgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgc2VhcmNoIHBhcmFtZXRlci4KICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFByZXBhcmUgZnVsbC10ZXh0IHNlYXJjaC4KICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICBteSAlVmFsaWRMaXN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICAgICAgbXkgQEFsbFZhbGlkSURzID0ga2V5cyAlVmFsaWRMaXN0OwoKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBTZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MuCiAgICAgICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgUHJlcGFyZSBzZWFyY2ggc3RhdGVzLgogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkSW50ZXJmYWNlU3RhdGVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkSW50ZXJmYWNlU3RhdGVzLT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJEludGVyZmFjZVN0YXRlcy0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtWb3RlU2VhcmNofSApICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgVXNlckNhdGVnb3J5R3JvdXAgSGFzaC4KICAgICAgICAjIFRoaXMgcmV0dXJucyBhIEhhc2ggb2YgdGhlIGZvbGxvd2luZyBzYW1wbGUgZGF0YSBzdHJ1Y3R1cmU6CiAgICAgICAgIwogICAgICAgICMgJFVzZXJDYXRHcm91cCA9IHsKICAgICAgICAjICAgJzEnID0+IHsKICAgICAgICAjICAgICAgICAgICczJyA9PiAnTWlzY1N1YicKICAgICAgICAjICAgICAgICB9LAogICAgICAgICMgICAnMycgPT4ge30sCiAgICAgICAgIyAgICcwJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgIyAgICAgICAgICAgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICMgICAgICAgICAgfSwKICAgICAgICAjICAgJzInID0+IHt9CiAgICAgICAgIyB9OwogICAgICAgICMKICAgICAgICAjIEtleXMgb2YgdGhlIG91dGVyIGhhc2ggaW5mb3JtIGFib3V0IHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIyAgIDAgU2hvd3MgdG9wIGxldmVsIENhdGVnb3J5SURzLgogICAgICAgICMgICAxIFNob3dzIHRoZSBTdWJjYXRlZ29yeUlEcyBvZiBDYXRlZ29yeSAxLgogICAgICAgICMgICAyIGFuZCAzIGFyZSBlbXB0eSBoYXNoZXMgYmVjYXVzZSB0aGVzZSBjYXRlZ29yaWVzIGRvbid0IGhhdmUgc3ViY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBpbm5lciBoYXNoZXMgYXJlIENhdGVnb3J5SURzIGEgdXNlciBpcyBhbGxvd2VkIHRvIGhhdmUgcm8gYWNjZXNzIHRvLgogICAgICAgICMgVmFsdWVzIGFyZSB0aGUgQ2F0ZWdvcnkgbmFtZXMuCgogICAgICAgIG15ICRVc2VyQ2F0R3JvdXAgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBGaW5kIENhdGVnb3J5SURzIHRoZSBjdXJyZW50IFVzZXIgaXMgYWxsb3dlZCB0byB2aWV3LgogICAgICAgIG15ICVBbGxvd2VkQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwICYmIHJlZiAkVXNlckNhdEdyb3VwIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICMgU28gbm93IHdlIGhhdmUgdG8gZXh0cmFjdCBhbGwgQ2F0ZWdvcnkgSUQncyBvZiB0aGUgImlubmVyIGhhc2hlcyIKICAgICAgICAgICAgIyAgIC0+IExvb3AgdGhyb3VnaCB0aGUgb3V0ZXIgY2F0ZWdvcnkgSUQncy4KICAgICAgICAgICAgZm9yIG15ICRMZXZlbCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0R3JvdXB9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIFZhbHVlIG9mIHRoZSBjdXJyZW50IGhhc2gga2V5IGlzIGEgaGFzaCByZWYuCiAgICAgICAgICAgICAgICBpZiAoICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9ICYmIHJlZiAkVXNlckNhdEdyb3VwLT57JExldmVsfSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgTWFwIHRoZSBrZXlzIG9mIHRoZSBpbm5lciBoYXNoIHRvIGEgVGVtcElEcyBoYXNoLgogICAgICAgICAgICAgICAgICAgICMgT3JpZ2luYWwgRGF0YSBzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAgICAgICAgICAgICAjICAgfQogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjICAgYWZ0ZXIgbWFwcGluZzoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzInID0+IDEnCiAgICAgICAgICAgICAgICAgICAgIyAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJVRlbXBJRHMgPSBtYXAgeyAkXyA9PiAxIH0ga2V5cyAleyAkVXNlckNhdEdyb3VwLT57JExldmVsfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgVGVtcElEcyBvdmVyIHRoZSBmb3JtYWxseSBmb3VuZCBBbGxvd2VkQ2F0ZWdvcnlzIHRvIHByb2R1Y2UgYSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyAgIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cyBhbmQgdGhlIG51bWJlciAxIGFzIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgICAgICAgICAlVGVtcElEcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHRoZSBkYXRhYmFzZSBxdWVyeSBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFycmF5IG9mIENhdGVnb3J5SURzLgogICAgICAgIG15IEBDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoJUFsbG93ZWRDYXRlZ29yeUlEcykgewogICAgICAgICAgICBAQ2F0ZWdvcnlJRHMgPSBzb3J0IGtleXMgJUFsbG93ZWRDYXRlZ29yeUlEczsKICAgICAgICB9CgogICAgICAgICMgQ2F0ZWdvcmllcyBnb3QgZnJvbSB0aGUgd2ViIHJlcXVlc3QgY291bGQgaW5jbHVkZSBhIG5vdCBhbGxvd2VkIGNhdGVnb3J5IGlmIHRoZSB1c2VyCiAgICAgICAgIyAgICB0ZW1wZXIgd2l0aCB0aGUgY2F0ZWdvcmllcyBkcm9wLWJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2guCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyAgIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyAgIHNvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSBoYXMgdG8gYmUgcHJlc2VudAoKICAgICAgICBteSBAVmlld2FibGVJdGVtSURzID0gKCk7CgogICAgICAgIGlmIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgICAgICMgUGVyZm9ybSBGQVEgc2VhcmNoLgogICAgICAgICAgICAjIERlZmF1bHQgc2VhcmNoIG9uIGFsbCB2YWxpZCBpZHMsIHRoaXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5ICVHZXRQYXJhbS4KICAgICAgICAgICAgQFZpZXdhYmxlSXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbJE9yZGVyQnldLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlYXJjaFN0YXRlcywKICAgICAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBWYWxpZElEcyAgICAgICAgICAgID0+IFxAQWxsVmFsaWRJRHMsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgICAgICAgID0+IFxAQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAgICAgIyBDU1YgYW5kIEV4Y2VsIG91dHB1dC4KICAgICAgICBpZiAoCiAgICAgICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJwogICAgICAgICAgICB8fCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0V4Y2VsJwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAVG1wQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkhlYWQ7CiAgICAgICAgICAgIG15IEBDU1ZEYXRhOwoKICAgICAgICAgICAgIyBHZXQgdGhlIEZBUSBkeW5hbWljIGZpZWxkcyBmb3IgQ1NWIGRpc3BsYXkuCiAgICAgICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICBGaWVsZEZpbHRlciA9PiAkQ29uZmlnLT57U2VhcmNoQ1NWRHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgIyBHZXQgRkFRIGRhdGEgZGV0YWlscy4KICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEdldCBpbmZvIGZvciBDU1Ygb3V0cHV0LgogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoJUZBUURhdGEpOwoKICAgICAgICAgICAgICAgICRDU1ZJbmZve0NoYW5nZWR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgICAgICAgICAnRGF0ZUZvcm1hdCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ1NWIHF1b3RlLgogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCAgICA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICAgICAjIEluc2VydCBsYW5ndWFnZSBoZWFkZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICBxdyhTdGF0ZSBDaGFuZ2VkKTsKCiAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDVlMgcmVzdWx0cy4KICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBJbnNlcnQgZGF0YS4KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQgYmFja2VuZAogICAgICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRdKyApIFx6fXhtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgTG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkIGZvciBDU1Ygb3V0cHV0LgogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgd2l0aCBvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXguCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRDU1ZJbmZveyRIZWFkZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQERhdGEsICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHJldHJpZXZlIGRhdGEgZnJvbSBGQVEgaXRlbS4KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlLgogICAgICAgICAgICAjIFRyYW5zbGF0ZSBub24gZXhpc3RpbmcgaGVhZGVyIG1heSByZXN1bHQgaW4gYSBnYXJiYWdlIGZpbGUuCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwogICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgSW5zZXJ0IGxhbmd1YWdlIGhlYWRlci4KICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICMgSW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgb24gQ1ZTIHJlc3VsdHMuCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgU2VwYXJhdG9yIGZyb20gbGFuZ3VhZ2UgZmlsZS4KICAgICAgICAgICAgbXkgJFVzZXJDU1ZTZXBhcmF0b3IgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT57U2VwYXJhdG9yfTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpLT57Q1NWU2VwYXJhdG9yfS0+e0FjdGl2ZX0gKSB7CiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9ICkgewogICAgICAgICAgICAgICAgICAgICRVc2VyQ1NWU2VwYXJhdG9yID0gJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRyYW5zbGF0ZSBoZWFkZXJzLgogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIFJlcGxhY2UgRkFRTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IEZBUUhvb2sgZnJvbSBjb25maWcuCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJldHVybiBDU1YgdG8gZG93bmxvYWQuCiAgICAgICAgICAgIG15ICRGaWxlTmFtZSA9ICdGQVFfc2VhcmNoJzsKCiAgICAgICAgICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBteSAkRGF0ZVRpbWUgICAgICAgPSAkRGF0ZVRpbWVPYmplY3QtPkdldCgpOwogICAgICAgICAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgICAgICAgICAgbXkgJE0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNb250aH0gKTsKICAgICAgICAgICAgbXkgJEQgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntEYXl9ICk7CiAgICAgICAgICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgICAgICAgICAgbXkgJG0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNaW51dGV9ICk7CgogICAgICAgICAgICBteSAkQ1NWT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpOwoKICAgICAgICAgICAgIyBHZW5lcmF0ZSBDU1Ygb3V0cHV0LgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKCiAgICAgICAgICAgICAgICBteSAkQ1NWID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBTZXBhcmF0b3IgPT4gJFVzZXJDU1ZTZXBhcmF0b3IsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUmV0dXJuIENTViB0byBkb3dubG9hZCwKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlTmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0uY3N2IiwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2VuZXJhdGUgRXhjZWwgb3V0cHV0LgogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewogICAgICAgICAgICAgICAgbXkgJEV4Y2VsID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJ0V4Y2VsJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gRXhjZWwgdG8gZG93bmxvYWQuCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZU5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnhsc3giLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRXhjZWwsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CgogICAgICAgICAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICAgICAgICAgbXkgQFBERkRhdGE7CiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgY2hhbmdlIGRhdGUgdG8gbG9uZyBmb3JtYXQuCiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgUERGIFJvd3MuCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgbGFuZ3VhZ2Ugcm93LgogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtMYW5ndWFnZX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAgJEZBUURhdGF7U3RhdGV9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAgJENoYW5nZWQ7CiAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQREYgT3V0cHV0LgogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBHZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMuCiAgICAgICAgICAgIG15ICRNYXhQYWdlcyA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgICAgICBpZiAoICEkTWF4UGFnZXMgfHwgJE1heFBhZ2VzIDwgMSB8fCAkTWF4UGFnZXMgPiAxMDAwICkgewogICAgICAgICAgICAgICAgJE1heFBhZ2VzID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENyZWF0ZSB0aGUgaGVhZGVyLgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIE91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4uCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1RpdGxlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5Jyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBTdG9yZSB0aGUgY29ycmVjdCBoZWFkZXIgaW5kZXguCiAgICAgICAgICAgICAgICBteSAkTmV4dEhlYWRlckluZGV4ID0gMzsKCiAgICAgICAgICAgICAgICAjIEFkZCBsYW5ndWFnZSBoZWFkZXIuCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJyk7CiAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgICAgICROZXh0SGVhZGVySW5kZXggICAgICAgICAgICAgICA9IDQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGNvbnRlbnQgYXJyYXkuCiAgICAgICAgICAgICAgICBteSAkQ291bnRlclJvdyA9IDE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQFBERkRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ291bnRlckNvbHVtbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb250ZW50ICggQHskUm93fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bJENvdW50ZXJSb3ddLT5bJENvdW50ZXJDb2x1bW5dLT57Q29udGVudH0gPSAkQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJDb2x1bW4rKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJSb3crKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTm8gUmVzdWx0IScpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQYWdlIHBhcmFtcy4KICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtQYWdlT3JpZW50YXRpb259ID0gJ2xhbmRzY2FwZSc7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luVG9wfSAgICAgICA9IDMwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Cb3R0b219ICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luTGVmdH0gICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGxpbmVMZWZ0fSAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgVGFibGUgcGFyYW1zLgogICAgICAgICAgICBteSAlVGFibGVQYXJhbTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjREREREREJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICMgQ3JlYXRlIG5ldyBQREYgZG9jdW1lbnQuCiAgICAgICAgICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBTdGFydCB0YWJsZSBvdXRwdXQuCiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIE91dHB1dCB0aXRsZS4KICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIE91dHB1dCAicHJpbnRlZCBieSIuCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ID0+ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckZ1bGxuYW1lfSAuICcgKCcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpJwogICAgICAgICAgICAgICAgICAgIC4gJywgJyAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciAoIDIgLi4gJE1heFBhZ2VzICkgewoKICAgICAgICAgICAgICAgICMgT3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KS4KICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgICAgICMgU3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlLgogICAgICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnICcgLiAkXywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRX3NlYXJjaCc7CgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJERhdGVUaW1lICAgICAgID0gJERhdGVUaW1lT2JqZWN0LT5HZXQoKTsKICAgICAgICAgICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICAgICAgICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICAgICAgICAgIG15ICREICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57RGF5fSApOwogICAgICAgICAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICAgICAgICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgICAgICAgICAgbXkgJFBERlN0cmluZyA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBTdGFydCBIVE1MIHBhZ2UuCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPlByaW50KAogICAgICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0ID0gJyc7CgogICAgICAgICAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICAgICAgbXkgJFZpZXcgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgICAgICAgICAjIFNob3cgRkFRJ3MuCiAgICAgICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRGaWx0ZXIpCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRWaWV3KQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rQmFjayA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7UHJvZmlsZT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRWaWV3KQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKCiAgICAgICAgICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgICAgIG15IEBTaG93Q29sdW1uczsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgICAgICMgR2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnLgogICAgICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJENvbmZpZy0+e1Nob3dDb2x1bW5zfSB9OwoKICAgICAgICAgICAgICAgICMgR2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRW5mb3JjZSBGQVEgbnVtYmVyIGNvbHVtbiBzaW5jZSBpcyB0aGUgbGluayBNYXN0ZXJBY3Rpb24gaG9vay4KICAgICAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZBUUxpc3RTaG93KAogICAgICAgICAgICAgICAgRkFRSURzID0+IFxAVmlld2FibGVJdGVtSURzLAogICAgICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVJdGVtSURzLAoKICAgICAgICAgICAgICAgIFZpZXcgPT4gJFZpZXcsCgogICAgICAgICAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgICAgICBMaW5rRmlsdGVyID0+ICRMaW5rRmlsdGVyLAogICAgICAgICAgICAgICAgTGlua0JhY2sgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgICAgICBQcm9maWxlICAgID0+ICRQcm9maWxlLAoKICAgICAgICAgICAgICAgIFRpdGxlTmFtZSA9PiBUcmFuc2xhdGFibGUoJ1NlYXJjaCBSZXN1bHQnKSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCgogICAgICAgICAgICAgICAgRmlsdGVyICAgICA9PiAkRmlsdGVyLAogICAgICAgICAgICAgICAgRmlsdGVyTGluayA9PiAkRmlsdGVyTGluaywKCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiAkU29ydEJ5LAoKICAgICAgICAgICAgICAgIFNob3dDb2x1bW5zICA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICAgICAgRkFRVGl0bGVTaXplID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgfQoKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUHJvZmlsZURlbGV0ZScgKSB7CiAgICAgICAgbXkgJFByb2ZpbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKTsKCiAgICAgICAgIyBSZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYuCiAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gMSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+X01hc2tGb3JtKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDaGFyc2V0ICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgU2hvdyBkZWZhdWx0IHNlYXJjaCBzY3JlZW4uCiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIFNlbmQgZGF0YSB0byBKUy4KICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIFZhbHVlID0+IDEsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICByZXR1cm4gJE91dHB1dDsKCn0KCnN1YiBfTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRQcm9maWxlICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApIHx8ICcnOwogICAgbXkgJEVtcHR5U2VhcmNoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VtcHR5U2VhcmNoJyApOwogICAgaWYgKCAhJFByb2ZpbGUgKSB7CiAgICAgICAgJEVtcHR5U2VhcmNoID0gMTsKICAgIH0KCiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgbXkgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIEdldCBjb25maWcgZnJvbSBjb25zdHJ1Y3Rvci4KICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgIyBJZiBubyBwcm9maWxlIGlzIHVzZWQsIHNldCBkZWZhdWx0IHBhcmFtcyBvZiBkZWZhdWx0IGF0dHJpYnV0ZXMuCiAgICBpZiAoICEkUHJvZmlsZSApIHsKICAgICAgICBpZiAoICRDb25maWctPntEZWZhdWx0c30gKSB7CiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRDb25maWctPntEZWZhdWx0c30tPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICRBdHRyaWJ1dGUgZXEgJ0R5bmFtaWNGaWVsZCc7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gPSAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTZXQgYXR0cmlidXRlcyBzdHJpbmcuCiAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBOdW1iZXInKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGdWxsdGV4dCcpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1RpdGxlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdLZXl3b3JkJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBTaG93IExhbmd1YWdlcyBhdHRyaWJ1dGUuCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0xhbmd1YWdlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0NhdGVnb3J5JyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWYWxpZElEcycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnVmFsaWRpdHknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1N0YXRlSURzJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTdGF0ZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1ZvdGVzJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdSYXRlU2VhcmNoVHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnUmF0ZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0FwcHJvdmVkJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDcmVhdGVkVXNlcklEcycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBieScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdMYXN0IENoYW5nZWQgYnknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJdGVtQ3JlYXRlVGltZVNsb3QnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lU2xvdCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJyksCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZFNlcGFyYXRvciA9IDE7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIENyZWF0ZSBkeW5hbWljIGZpZWxkcyBzZWFyY2ggb3B0aW9ucyBmb3IgYXR0cmlidXRlIHNlbGVjdC4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAjIENyZWF0ZSBhIHNlcGFyYXRvciBmb3IgZHluYW1pYyBmaWVsZHMgYXR0cmlidXRlcy4KICAgICAgICBpZiAoJER5bmFtaWNGaWVsZFNlcGFyYXRvcikgewogICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlcGFyYXRvciA9IDA7CiAgICAgICAgfQoKICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgbXkgJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICApOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRTdWZmaXggPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkUHJlZmVyZW5jZS0+e0xhYmVsU3VmZml4fSwKICAgICAgICAgICAgKSB8fCAnJzsKCiAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZFN1ZmZpeCkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRTdWZmaXggPSAnICgnIC4gJFRyYW5zbGF0ZWRTdWZmaXggLiAnKSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCAuICRUcmFuc2xhdGVkU3VmZml4LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDcmVhdGUgYSBzZXBhcmF0b3IgaWYgYSBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZSB3YXMgcHVzaGVkLgogICAgaWYgKCAhJER5bmFtaWNGaWVsZFNlcGFyYXRvciApIHsKICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgQ3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzLgogICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBHZXQgZmllbGQgSFRNTC4KICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e0RlZmF1bHRzfS0+e0R5bmFtaWNGaWVsZH0KICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBEcm9wLWRvd24gbWVudSBmb3IgJ2F0dHJpYnV0ZXMnLgogICAgJFBhcmFte0F0dHJpYnV0ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdBdHRyaWJ1dGUnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdBdHRyaWJ1dGVPcmlnJywKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIERyb3AtZG93biBtZW51IGZvciAnbGFuZ3VhZ2VzJy4KICAgICRQYXJhbXtMYW5ndWFnZXNTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFuZ3VhZ2VJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17TGFuZ3VhZ2VJRHN9IHx8IFtdLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgR2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzLgogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBCdWlsZCB0aGUgY2F0ZWdvcnkgc2VsZWN0aW9uLgogICAgJFBhcmFte0NhdGVnb3JpZXNTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICBOYW1lICAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0NhdGVnb3J5SURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgPT4gJFRyZWVWaWV3LAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwoKICAgICMgQnVpbGQgdGhlIHZhbGlkIHNlbGVjdGlvbi4KICAgICRQYXJhbXtWYWxpZFNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZhbGlkSURzJywKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtWYWxpZElEc30gfHwgW10sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIENyZWF0ZSBhIG1peCBvZiBzdGF0ZSBhbmQgc3RhdGUgdHlwZXMgaGFzaCBpbiBvcmRlciB0byBoYXZlIHRoZSBzdGF0ZSB0eXBlIElEcyB3aXRoIHN0YXRlIG5hbWVzLgogICAgbXkgJVN0YXRlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlU3RhdGVzOwogICAgZm9yIG15ICRTdGF0ZUlEICggc29ydCBrZXlzICVTdGF0ZUxpc3QgKSB7CiAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRTdGF0ZXN7ICRTdGF0ZURhdGF7VHlwZUlEfSB9ID0gJFN0YXRlRGF0YXtOYW1lfTsKICAgIH0KCiAgICAkUGFyYW17U3RhdGVTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlU3RhdGVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17U3RhdGVJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJVZvdGluZ09wZXJhdG9ycyA9ICgKICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0VxdWFscycpLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuJyksCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4gZXF1YWxzJyksCiAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4nKSwKICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbiBlcXVhbHMnKSwKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte0FwcHJvdmVkU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm8gID0+IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgWWVzID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gfHwgJ1llcycsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIEdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIHRvIGRpc3BsYXkuCiAgICBteSAlU2hvd25Vc2VycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSAkRnJvbnRlbmRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKTsKICAgIG15ICRGQVFBZGRHcm91cHMgICA9ICRGcm9udGVuZENvbmZpZy0+e0FnZW50RkFRQWRkfS0+e0dyb3VwfSB8fCBbXTsKCiAgICBteSAlRkFRQWRkVXNlcnMgPSAlU2hvd25Vc2VyczsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRGQVFBZGRHcm91cHMpICkgewoKICAgICAgICBteSAlR3JvdXBVc2VyczsKICAgICAgICBmb3IgbXkgJEdyb3VwICggQHskRkFRQWRkR3JvdXBzfSApIHsKCiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICAgICAgbXkgJVVzZXJzICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgICAgICBSZXN1bHQgID0+ICdIQVNIJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgICAgICB9CgogICAgICAgICMgUmVtb3ZlIGFsbCB1c2VycyB0aGF0IGFyZSBub3QgaW4gdGhlIEZBUSBvciBmYXFfYWRtaW4gZ3JvdXBzLgogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVGQVFBZGRVc2VycyApIHsKICAgICAgICAgICAgaWYgKCAhJEdyb3VwVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJEZBUUFkZFVzZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJFBhcmFte0NyZWF0ZWRVc2VyU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlRkFRQWRkVXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3JlYXRlZFVzZXJJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17Q3JlYXRlZFVzZXJJRHN9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICRGQVFFZGl0R3JvdXBzID0gJEZyb250ZW5kQ29uZmlnLT57QWdlbnRGQVFFZGl0fS0+e0dyb3VwfSB8fCBbXTsKCiAgICBteSAlRkFRRWRpdFVzZXJzID0gJVNob3duVXNlcnM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRkFRRWRpdEdyb3VwcykgKSB7CgogICAgICAgIG15ICVHcm91cFVzZXJzOwogICAgICAgIGZvciBteSAkR3JvdXAgKCBAeyRGQVFFZGl0R3JvdXBzfSApIHsKCiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICAgICAgbXkgJVVzZXJzICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgICAgICBSZXN1bHQgID0+ICdIQVNIJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgICAgICB9CgogICAgICAgICMgUmVtb3ZlIGFsbCB1c2VycyB0aGF0IGFyZSBub3QgaW4gdGhlIEZBUSBvciBmYXFfYWRtaW4gZ3JvdXBzLgogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVGQVFFZGl0VXNlcnMgKSB7CiAgICAgICAgICAgIGlmICggISRHcm91cFVzZXJzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRGQVFFZGl0VXNlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFBhcmFte0xhc3RDaGFuZ2VkVXNlclN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUZBUUVkaXRVc2VycywKICAgICAgICBOYW1lICAgICAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17TGFzdENoYW5nZWRVc2VySURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgICdCZWZvcmUnID0+IFRyYW5zbGF0YWJsZSgnbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB8fCAnTGFzdCcsCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gVHJhbnNsYXRhYmxlKCdtaW51dGUocyknKSwKICAgICAgICAgICAgaG91ciAgID0+IFRyYW5zbGF0YWJsZSgnaG91cihzKScpLAogICAgICAgICAgICBkYXkgICAgPT4gVHJhbnNsYXRhYmxlKCdkYXkocyknKSwKICAgICAgICAgICAgd2VlayAgID0+IFRyYW5zbGF0YWJsZSgnd2VlayhzKScpLAogICAgICAgICAgICBtb250aCAgPT4gVHJhbnNsYXRhYmxlKCdtb250aChzKScpLAogICAgICAgICAgICB5ZWFyICAgPT4gVHJhbnNsYXRhYmxlKCd5ZWFyKHMpJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNyZWF0ZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgICdCZWZvcmUnID0+IFRyYW5zbGF0YWJsZSgnbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0fSB8fCAnTGFzdCcsCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gVHJhbnNsYXRhYmxlKCdtaW51dGUocyknKSwKICAgICAgICAgICAgaG91ciAgID0+IFRyYW5zbGF0YWJsZSgnaG91cihzKScpLAogICAgICAgICAgICBkYXkgICAgPT4gVHJhbnNsYXRhYmxlKCdkYXkocyknKSwKICAgICAgICAgICAgd2VlayAgID0+IFRyYW5zbGF0YWJsZSgnd2VlayhzKScpLAogICAgICAgICAgICBtb250aCAgPT4gVHJhbnNsYXRhYmxlKCdtb250aChzKScpLAogICAgICAgICAgICB5ZWFyICAgPT4gVHJhbnNsYXRhYmxlKCd5ZWFyKHMpJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNoYW5nZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RvcFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DaGFuZ2VUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICBteSAlUHJvZmlsZXMgPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwogICAgZGVsZXRlICRQcm9maWxlc3snJ307CiAgICBkZWxldGUgJFByb2ZpbGVzeydsYXN0LXNlYXJjaCd9OwogICAgaWYgKCRFbXB0eVNlYXJjaCkgewogICAgICAgICRQcm9maWxlc3snJ30gPSAnLSc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUHJvZmlsZXN7J2xhc3Qtc2VhcmNoJ30gPSAnLSc7CiAgICB9CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVQcm9maWxlcywKICAgICAgICBOYW1lICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBJRCAgICAgICAgID0+ICdTZWFyY2hQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQcm9maWxlLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSZXN1bHRGb3JtU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgICAgIFByaW50ICA9PiBUcmFuc2xhdGFibGUoJ1ByaW50JyksCiAgICAgICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpLAogICAgICAgICAgICBFeGNlbCAgPT4gVHJhbnNsYXRhYmxlKCdFeGNlbCcpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnUmVzdWx0Rm9ybScsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBFbXB0eVNlYXJjaCA9PiAkRW1wdHlTZWFyY2gsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBPdXRwdXQgRHluYW1pYyBmaWVsZHMgYmxvY2tzLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgR2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcy4KICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBTaG93IGF0dHJpYnV0ZXMuCiAgICBteSBAU2VhcmNoQXR0cmlidXRlczsKICAgIG15ICVBbHJlYWR5U2hvd247CiAgICBpZiAoJFByb2ZpbGUpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVFTZWFyY2hQcm9maWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJFByb2ZpbGUsCiAgICAgICAgKTsKICAgIH0KCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgIG15ICRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICEkS2V5OwogICAgICAgIG5leHQgSVRFTSBpZiAhZGVmaW5lZCAkR2V0UGFyYW17JEtleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICRHZXRQYXJhbXskS2V5fSBlcSAnJzsKCiAgICAgICAgbmV4dCBJVEVNIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CiAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgIH0KCiAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBmdWxsLXRleHQgc2VhcmNoLgogICAgaWYgKCAhJFByb2ZpbGUgKSB7CgogICAgICAgICMgTWVyZ2UgcmVndWxhciBzaG93L2hpZGUgc2V0dGluZ3MgYW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGR5bmFtaWMgZmllbGRzLgogICAgICAgIG15ICVEZWZhdWx0cyA9ICV7ICRDb25maWctPntEZWZhdWx0c30gfHwge30gfTsKCiAgICAgICAgZGVsZXRlICREZWZhdWx0c3tEeW5hbWljRmllbGR9OwoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZEl0ZW0gKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30gfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRJdGVtfSA9PSAyICkgewogICAgICAgICAgICAgICAgJERlZmF1bHRzeyJTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRJdGVtIn0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJURlZmF1bHRzKSB7CiAgICAgICAgICAgIERFRkFVTFQ6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVEZWZhdWx0cyApIHsKICAgICAgICAgICAgICAgIG5leHQgREVGQVVMVCBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOyAgICAjIGlnbm9yZSBlbnRyeSBmb3IgREYgY29uZmlnCiAgICAgICAgICAgICAgICBuZXh0IERFRkFVTFQgaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAgICAgICAgICRBbHJlYWR5U2hvd257JEtleX0gPSAxOwogICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgSWYgbm8gYXR0cmlidXRlIGlzIHNob3duLCBzaG93IGZ1bGwtdGV4dCBzZWFyY2guCiAgICAgICAgICAgIGlmICggIWtleXMgJUFscmVhZHlTaG93biApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEF0dHJpYnV0ZXMsICdGdWxsdGV4dCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdTZWFyY2hBdHRyaWJ1dGVzJywKICAgICAgICBWYWx1ZSA9PiBcQFNlYXJjaEF0dHJpYnV0ZXMsCiAgICApOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgQUpBWCAgICAgICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2hTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgR2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQuCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIik7CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0LgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBHZXQgY29uZmlnIGZyb20gY29uc3RydWN0b3IuCiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgICMgR2V0IGNvbmZpZyBkYXRhLgogICAgbXkgJFN0YXJ0SGl0ICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ID0gJENvbmZpZy0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICBteSAkU29ydEJ5ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwogICAgbXkgJFByb2ZpbGUgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgICAgIHx8ICcnOwogICAgbXkgJFNhdmVQcm9maWxlICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgbXkgJFRha2VMYXN0U2VhcmNoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgbXkgJEVyYXNlVGVtcGxhdGUgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwogICAgbXkgJE5hdiAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hdicgKSAgICAgICAgICAgIHx8ICcnOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBTZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlLgogICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VhcmNoVGVtcGxhdGUnICkgJiYgJFByb2ZpbGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1BZ2VudEZBUVNlYXJjaFNtYWxsO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFByb2ZpbGU7TmF2PSROYXYiCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBzaW5nbGUgcGFyYW1zLgogICAgbXkgJUdldFBhcmFtOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJFNlYXJjaFByb2ZpbGVPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpOwoKICAgICMgTG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpLgogICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRQcm9maWxlICkgfHwgJFRha2VMYXN0U2VhcmNoICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgR2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1ldGVycyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpLgogICAgZWxzZSB7CgogICAgICAgICMgR2V0IHNjYWxhciBzZWFyY2ggcGFyYW1ldGVycyBmcm9tIHdlYiByZXF1ZXN0LgogICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlIFZvdGVTZWFyY2hPcHRpb24KICAgICAgICAgICAgUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uIEFwcHJvdmVkU2VhcmNoCiAgICAgICAgICAgIFRpbWVTZWFyY2hUeXBlIENoYW5nZVRpbWVTZWFyY2hUeXBlCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCBJdGVtQ2hhbmdlVGltZVBvaW50CiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0IEl0ZW1DaGFuZ2VUaW1lU3RhcnREYXkgSXRlbUNoYW5nZVRpbWVTdGFydE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RhcnRZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcCBJdGVtQ2hhbmdlVGltZVN0b3BEYXkgSXRlbUNoYW5nZVRpbWVTdG9wTW9udGgKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdG9wWWVhcgogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYXJyYXkgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtICgKICAgICAgICAgICAgcXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgVmFsaWRJRHMgU3RhdGVJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdC4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoIHByb2ZpbGUuCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGFwcHJvdmVkIG9wdGlvbi4KICAgIGlmICggJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSAmJiAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9IGVxICdZZXMnICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ05vJyApIHsKICAgICAgICAkR2V0UGFyYW17QXBwcm92ZWR9ID0gMDsKICAgIH0KCiAgICAjIEdldCB2b3RlIG9wdGlvbi4KICAgIGlmICggISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSBlcSAnVm90ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIEdldCByYXRlIG9wdGlvbi4KICAgIGlmICggISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSBlcSAnUmF0ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIEdldCBjcmVhdGUgdGltZSBvcHRpb24uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBHZXQgY2hhbmdlIHRpbWUgb3B0aW9uLgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgU2V0IHJlc3VsdCBmb3JtIEVOVi4KICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIFNob3cgcmVzdWx0IHNpdGUuCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJEVyYXNlVGVtcGxhdGUgKSB7CgogICAgICAgICMgRmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkuCiAgICAgICAgaWYgKCAhJFByb2ZpbGUgfHwgISRTYXZlUHJvZmlsZSApIHsKICAgICAgICAgICAgJFByb2ZpbGUgPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKCiAgICAgICAgIyBTdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUVNlYXJjaFNtYWxsO1N1YmFjdGlvbj1TZWFyY2giCiAgICAgICAgICAgIC4gIjtQcm9maWxlPSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAuICI7U29ydEJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICI7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTdGFydEhpdCkKICAgICAgICAgICAgLiAiO05hdj0kTmF2IjsKCiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIFNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKS4KICAgICAgICAkU2F2ZVByb2ZpbGUgPSAxOwoKICAgICAgICAjIFJlbWVtYmVyIGxhc3Qgc2VhcmNoIHZhbHVlcy4KICAgICAgICBpZiAoICRTYXZlUHJvZmlsZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgUmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmLgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEluc2VydCBuZXcgcHJvZmlsZSBwYXJhbWV0ZXJzLgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSB2b3RlcyBzZWFyY2guCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSByYXRlIHNlYXJjaC4KICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2UgPT4gJ0NoYW5nZVRpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIEdldCBjcmVhdGUgdGltZSBzZXR0aW5ncy4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBEbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZi4KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIE1vcmUgdGhhbiAuLi4gYWdvLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBXaXRoaW4gbmV4dC4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIFdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBQcmVwYXJlIGZ1bGwtdGV4dCBzZWFyY2guCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVZhbGlkTGlzdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgICAgIG15IEBBbGxWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKCiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBTZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MuCiAgICAgICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgUHJlcGFyZSBzZWFyY2ggc3RhdGVzLgogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkSW50ZXJmYWNlU3RhdGVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkSW50ZXJmYWNlU3RhdGVzLT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJEludGVyZmFjZVN0YXRlcy0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSB2b3RlcyBzZWFyY2guCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSByYXRlIHNlYXJjaC4KICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIER5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBGQVEgc2VhcmNoLgogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlLgogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFNldCBzZWFyY2ggcGFyYW1ldGVyLgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZWFyY2hQYXJhbWV0ZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IFVzZXJDYXRlZ29yeUdyb3VwIEhhc2guCiAgICAgICAgIyBUaGlzIHJldHVybnMgYSBIYXNoIG9mIHRoZSBmb2xsb3dpbmcgc2FtcGxlIGRhdGEgc3RydWN0dXJlOgogICAgICAgICMKICAgICAgICAjICRVc2VyQ2F0R3JvdXAgPSB7CiAgICAgICAgIyAgICcxJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAnMycgPT4gJ01pc2NTdWInCiAgICAgICAgIyAgICAgICAgfSwKICAgICAgICAjICAgJzMnID0+IHt9LAogICAgICAgICMgICAnMCcgPT4gewogICAgICAgICMgICAgICAgICAgICAnMScgPT4gJ01pc2MnLAogICAgICAgICMgICAgICAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAjICAgICAgICAgIH0sCiAgICAgICAgIyAgICcyJyA9PiB7fQogICAgICAgICMgfTsKICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBvdXRlciBoYXNoIGluZm9ybSBhYm91dCBzdWJjYXRlZ29yaWVzLgogICAgICAgICMgICAwIFNob3dzIHRvcCBsZXZlbCBDYXRlZ29yeUlEcy4KICAgICAgICAjICAgMSBTaG93cyB0aGUgU3ViY2F0ZWdvcnlJRHMgb2YgQ2F0ZWdvcnkgMS4KICAgICAgICAjICAgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJ3IGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkVXNlckNhdEdyb3VwID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgRmluZCBDYXRlZ29yeUlEcyB0aGUgY3VycmVudCBVc2VyIGlzIGFsbG93ZWQgdG8gdmlldy4KICAgICAgICBteSAlQWxsb3dlZENhdGVnb3J5SURzID0gKCk7CgogICAgICAgIGlmICggJFVzZXJDYXRHcm91cCAmJiByZWYgJFVzZXJDYXRHcm91cCBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAjIFNvIG5vdyB3ZSBoYXZlIHRvIGV4dHJhY3QgYWxsIENhdGVnb3J5SUQncyBvZiB0aGUgImlubmVyIGhhc2hlcyIKICAgICAgICAgICAgIyAgIC0+IExvb3AgdGhyb3VnaCB0aGUgb3V0ZXIgQ2F0ZWdvcnlJRCdzLgogICAgICAgICAgICBmb3IgbXkgJExldmVsICggc29ydCBrZXlzICV7JFVzZXJDYXRHcm91cH0gKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgVmFsdWUgb2YgdGhlIGN1cnJlbnQgaGFzaCBrZXkgaXMgYSBoYXNoIHJlZgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwLT57JExldmVsfSAmJiByZWYgJFVzZXJDYXRHcm91cC0+eyRMZXZlbH0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE1hcCB0aGUga2V5cyBvZiB0aGUgaW5uZXIgaGFzaCB0byBhIFRlbXBJRHMgaGFzaC4KICAgICAgICAgICAgICAgICAgICAjIE9yaWdpbmFsIERhdGFzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAgICAgICAgICAgICAjICAgfQogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjICAgYWZ0ZXIgbWFwcGluZzoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzInID0+IDEnCiAgICAgICAgICAgICAgICAgICAgIyAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJVRlbXBJRHMgPSBtYXAgeyAkXyA9PiAxIH0ga2V5cyAleyAkVXNlckNhdEdyb3VwLT57JExldmVsfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgVGVtcElEcyBvdmVyIHRoZSBmb3JtYWxseSBmb3VuZCBBbGxvd2VkQ2F0ZWdvcnlzIHRvIHByb2R1Y2UgYSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyAgIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cyBhbmQgdGhlIG51bWJlciAxIGFzIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgICAgICAgICAlVGVtcElEcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHRoZSBkYXRhYmFzZSBxdWVyeSBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFycmF5IG9mIENhdGVnb3J5SURzLgogICAgICAgIG15IEBDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoJUFsbG93ZWRDYXRlZ29yeUlEcykgewogICAgICAgICAgICBAQ2F0ZWdvcnlJRHMgPSBzb3J0IGtleXMgJUFsbG93ZWRDYXRlZ29yeUlEczsKICAgICAgICB9CgogICAgICAgICMgQ2F0ZWdvcmllcyBnb3QgZnJvbSB0aGUgd2ViIHJlcXVlc3QgY291bGQgaW5jbHVkZSBhIG5vdCBhbGxvd2VkIGNhdGVnb3J5IGlmIHRoZSB1c2VyCiAgICAgICAgIyAgICB0ZW1wZXIgd2l0aCB0aGUgY2F0ZWdvcmllcyBkcm9wLWJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2guCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyAgIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyAgIHNvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSBoYXMgdG8gYmUgcHJlc2VudC4KCiAgICAgICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICgpOwoKICAgICAgICBpZiAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICAgICAjIFBlcmZvcm0gRkFRIHNlYXJjaC4KICAgICAgICAgICAgIyBEZWZhdWx0IHNlYXJjaCBvbiBhbGwgdmFsaWQgaWRzLCB0aGlzIGNhbiBiZSBvdmVyd3JpdHRlbiBieSAlR2V0UGFyYW0uCiAgICAgICAgICAgIEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyRPcmRlckJ5XSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWFyY2hTdGF0ZXMsCiAgICAgICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAgICAgVmFsaWRJRHMgICAgICAgICAgICA9PiBcQEFsbFZhbGlkSURzLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICAgICA9PiBcQENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFN0YXJ0IEhUTUwgcGFnZS4KICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCA9ICcnOwoKICAgICAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICBteSAkVmlldyAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgICB8fCAnJzsKCiAgICAgICAgIyBTaG93IEZBUSdzLgogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkKICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua0ZpbHRlciA9ICdUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua0JhY2sgPSAnU3ViYWN0aW9uPUxvYWRQcm9maWxlO1Byb2ZpbGU9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnO1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRQcm9maWxlIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CgogICAgICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgbXkgQFNob3dDb2x1bW5zOwogICAgICAgIGlmICggJENvbmZpZy0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgICAgICMgR2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnLgogICAgICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICAgICAjIEdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duLgogICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2suCiAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+RkFRTGlzdFNob3coCiAgICAgICAgICAgIEZBUUlEcyA9PiBcQFZpZXdhYmxlSXRlbUlEcywKICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVJdGVtSURzLAoKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKCiAgICAgICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgTGlua0ZpbHRlciA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgTGlua0JhY2sgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFByb2ZpbGUsCgogICAgICAgICAgICBUaXRsZU5hbWUgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggUmVzdWx0JyksCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCgogICAgICAgICAgICBGaWx0ZXIgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIEZpbHRlckxpbmsgPT4gJEZpbHRlckxpbmssCgogICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCgogICAgICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tGb3JtKAogICAgICAgICAgICBOYXYgPT4gJE5hdiwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9NYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICBteSAlUHJvZmlsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpLT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0LgogICAgJFBhcmFte1Byb2ZpbGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQcm9maWxlc30sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgRHJvcC1kb3duIG1lbnUgZm9yICdsYW5ndWFnZXMnLgogICAgJFBhcmFte0xhbmd1YWdlc1NlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30gfHwgW10sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMuCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEJ1aWxkIHRoZSBjYXRlZ29yeSBzZWxlY3Rpb24uCiAgICAkUGFyYW17Q2F0ZWdvcmllc1NlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBUcmVlVmlldyAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgIyBCdWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uLgogICAgJFBhcmFte1ZhbGlkU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAnVmFsaWRJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZhbGlkSURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgQ3JlYXRlIGEgbWl4IG9mIHN0YXRlIGFuZCBzdGF0ZSB0eXBlcyBoYXNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIHN0YXRlIHR5cGUgSURzIHdpdGggc3RhdGUgbmFtZXMuCiAgICBteSAlU3RhdGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVTdGF0ZXM7CiAgICBmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlTGlzdCApIHsKICAgICAgICBteSAlU3RhdGVEYXRhID0gJEZBUU9iamVjdC0+U3RhdGVHZXQoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFN0YXRlc3sgJFN0YXRlRGF0YXtUeXBlSUR9IH0gPSAkU3RhdGVEYXRhe05hbWV9OwogICAgfQoKICAgICRQYXJhbXtTdGF0ZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1N0YXRlSURzJywKICAgICAgICBTaXplICAgICAgICA9PiAzLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXF1YWxzJyksCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4nKSwKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbiBlcXVhbHMnKSwKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbicpLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuIGVxdWFscycpLAogICAgKTsKCiAgICAkUGFyYW17Vm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Vm90ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte1JhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAwICAgPT4gJzAlJywKICAgICAgICAgICAgMjUgID0+ICcyNSUnLAogICAgICAgICAgICA1MCAgPT4gJzUwJScsCiAgICAgICAgICAgIDc1ICA9PiAnNzUlJywKICAgICAgICAgICAgMTAwID0+ICcxMDAlJywKICAgICAgICB9LAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaCcsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17QXBwcm92ZWRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBObyAgPT4gVHJhbnNsYXRhYmxlKCdObycpLAogICAgICAgICAgICBZZXMgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17QXBwcm92ZWRTZWFyY2h9IHx8ICcnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgYSBsaXN0IG9mIGFsbCB1c2VycyB0byBkaXNwbGF5LgogICAgbXkgJVNob3duVXNlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgJEZyb250ZW5kQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyk7CiAgICBteSAkRkFRQWRkR3JvdXBzICAgPSAkRnJvbnRlbmRDb25maWctPntBZ2VudEZBUUFkZH0tPntHcm91cH0gfHwgW107CgogICAgbXkgJUZBUUFkZFVzZXJzID0gJVNob3duVXNlcnM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRkFRQWRkR3JvdXBzKSApIHsKCiAgICAgICAgbXkgJUdyb3VwVXNlcnM7CiAgICAgICAgZm9yIG15ICRHcm91cCAoIEB7JEZBUUFkZEdyb3Vwc30gKSB7CgogICAgICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CiAgICAgICAgICAgIG15ICVVc2VycyAgID0gJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncncnLAogICAgICAgICAgICAgICAgUmVzdWx0ICA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICVHcm91cFVzZXJzID0gKCAlR3JvdXBVc2VycywgJVVzZXJzICk7CiAgICAgICAgfQoKICAgICAgICAjIFJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBGQVEgb3IgZmFxX2FkbWluIGdyb3Vwcy4KICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlRkFRQWRkVXNlcnMgKSB7CiAgICAgICAgICAgIGlmICggISRHcm91cFVzZXJzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRGQVFBZGRVc2Vyc3skVXNlcklEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRQYXJhbXtDcmVhdGVkVXNlclN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUZBUUFkZFVzZXJzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NyZWF0ZWRVc2VySURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRRWRpdEdyb3VwcyA9ICRGcm9udGVuZENvbmZpZy0+e0FnZW50RkFRRWRpdH0tPntHcm91cH0gfHwgW107CgogICAgbXkgJUZBUUVkaXRVc2VycyA9ICVTaG93blVzZXJzOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJEZBUUVkaXRHcm91cHMpICkgewoKICAgICAgICBteSAlR3JvdXBVc2VyczsKICAgICAgICBmb3IgbXkgJEdyb3VwICggQHskRkFRRWRpdEdyb3Vwc30gKSB7CgogICAgICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CiAgICAgICAgICAgIG15ICVVc2VycyAgID0gJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncncnLAogICAgICAgICAgICAgICAgUmVzdWx0ICA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICVHcm91cFVzZXJzID0gKCAlR3JvdXBVc2VycywgJVVzZXJzICk7CiAgICAgICAgfQoKICAgICAgICAjIFJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBGQVEgb3IgZmFxX2FkbWluIGdyb3Vwcy4KICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlRkFRRWRpdFVzZXJzICkgewogICAgICAgICAgICBpZiAoICEkR3JvdXBVc2Vyc3skVXNlcklEfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkRkFRRWRpdFVzZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVGQVFFZGl0VXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICdMYXN0JyAgID0+IFRyYW5zbGF0YWJsZSgnd2l0aGluIHRoZSBsYXN0IC4uLicpLAogICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ3JlYXRlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICdMYXN0JyAgID0+IFRyYW5zbGF0YWJsZSgnd2l0aGluIHRoZSBsYXN0IC4uLicpLAogICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVN0b3BTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ2hhbmdlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgIyBDcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMuCiAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBHZXQgZmllbGQgSFRNTC4KICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBTa2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZC4KICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoU21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgbXkgJVVzZXJQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggIWRlZmluZWQgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ICkgewogICAgICAgIGlmICggJFVzZXJQcmVmZXJlbmNlc3tVc2VyQWdlbnREb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ICkgewogICAgICAgICAgICAkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFBlcm1pc3Npb24gY2hlY2suCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBwYXJhbWV0ZXJzIGZyb20gd2ViIHJlcXVlc3QuCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICAkR2V0UGFyYW17UmF0ZX0gICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSYXRlJyApOwoKICAgICMgR2V0IG5hdmlnYXRpb24gYmFyIG9wdGlvbi4KICAgIG15ICROYXYgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmF2JyApIHx8ICcnOwoKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBDaGVjayB1c2VyIHBlcm1pc3Npb24uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICk7CiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ0dldCBwYXJhbWV0ZXJzIGZyb20gd2ViIHJlcXVlc3QuCiAgICAgICAgbXkgJEZpZWxkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkZpZWxkIiApOwoKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoIEl0ZW1JRCBGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IHRoZSBGaWVsZCBjb250ZW50LgogICAgICAgIG15ICRGaWVsZENvbnRlbnQgPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIFJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24sIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueC4KICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CgogICAgICAgICMgQnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzLgogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgIyBDb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpCiAgICAgICAgICAgICYmICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9CiAgICAgICAgICAgICYmICRGQVFEYXRhe0NvbnRlbnRUeXBlfSBuZSAndGV4dC9odG1sJwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+VG9IVE1MKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIERldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcuCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlCiAgICAgICAgIyAgIGNhbGxlZCBhZ2FpbgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIEFkZCBuZWVkZWQgSFRNTCBoZWFkZXJzLgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIFJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQuCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17RmlsZUlEfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBGaWxlSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCBhdHRhY2htZW50cy4KICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRHZXRQYXJhbXtGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVGaWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBPdGhlciBzdWItYWN0aW9ucyBjb250aW51ZXMgaGVyZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBEZWZpbmUgZGlmZmVyZW50IG5vdGlmaWNhdGlvbnMuCiAgICBteSAlTm90aWZpY2F0aW9ucyA9ICgKICAgICAgICBUaGFua3MgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnSW5mbycsCiAgICAgICAgICAgIEluZm8gICAgID0+IFRyYW5zbGF0YWJsZSgnVGhhbmtzIGZvciB5b3VyIHZvdGUhJyksCiAgICAgICAgfSwKICAgICAgICBBbHJlYWR5Vm90ZWQgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJyksCiAgICAgICAgfSwKICAgICAgICBOb1JhdGUgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ05vIHJhdGUgc2VsZWN0ZWQhJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBPdXRwdXQgbm90aWZpY2F0aW9ucyBpZiBhbnkuCiAgICBteSAkTm90aWZ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05vdGlmeScgKSB8fCAnJzsKICAgIGlmICggJE5vdGlmeSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJE5vdGlmaWNhdGlvbnN7JE5vdGlmeX0gKSApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgJXsgJE5vdGlmaWNhdGlvbnN7JE5vdGlmeX0gfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IGRlZmF1bHQgb3B0aW9ucy4KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIG15ICRWb3RpbmcgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgU2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzLgogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEdldCBGQVEgdm90ZSBpbmZvcm1hdGlvbi4KICAgIG15ICRWb3RlRGF0YTsKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJFZvdGVEYXRhID0gJEZBUU9iamVjdC0+Vm90ZUdldCgKICAgICAgICAgICAgQ3JlYXRlQnkgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkSW50ZXJmYWNlLT57U3RhdGVJRH0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBDaGVjayBpZiB1c2VyIGFscmVhZHkgdm90ZWQgdGhpcyBGQVEgaXRlbS4KICAgIG15ICRBbHJlYWR5Vm90ZWQ7CiAgICBpZiAoJFZvdGVEYXRhKSB7CgogICAgICAgIG15ICRJdGVtQ2hhbmdlZFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXtDaGFuZ2VkfSB8fCAnJywKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKCiAgICAgICAgbXkgJFZvdGVDcmVhdGVkU3lzdGVtVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlRGF0YS0+e0NyZWF0ZWR9IHx8ICcnLAogICAgICAgICAgICB9CiAgICAgICAgKS0+VG9FcG9jaCgpOwoKICAgICAgICBpZiAoICRJdGVtQ2hhbmdlZFN5c3RlbVRpbWUgPD0gJFZvdGVDcmVhdGVkU3lzdGVtVGltZSApIHsKICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFZvdGUgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyBVc2VyIGNhbid0IHVzZSB0aGlzIHN1Yi1hY3Rpb24gaWYgaXMgbm90IGVuYWJsZWQuCiAgICAgICAgaWYgKCAhJFZvdGluZyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgVXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbi4KICAgICAgICBpZiAoJEFscmVhZHlWb3RlZCkgewoKICAgICAgICAgICAgIyBSZWRpcmVjdCB0byBGQVEgem9vbS4KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtJdGVtSUR9CiAgICAgICAgICAgICAgICAgICAgLiAnO05hdj0kTmF2O05vdGlmeT1BbHJlYWR5Vm90ZWQnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFNldCB0aGUgdm90ZSBpZiBhbnkuCiAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtSYXRlfSApIHsKCiAgICAgICAgICAgICMgR2V0IHJhdGVzIGNvbmZpZy4KICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgICAgICAgICAgbXkgJFJhdGUgICAgICAgID0gJEdldFBhcmFte1JhdGV9OwoKICAgICAgICAgICAgIyBTZW5kIGVycm9yIGlmIHJhdGUgaXMgbm90IGRlZmluZWQgaW4gY29uZmlnLgogICAgICAgICAgICBpZiAoICEkVm90aW5nUmF0ZXMtPnskUmF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkIScpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBPdGhlcndpc2UgYWRkIHRoZSB2b3RlLgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBSYXRlICAgICAgPT4gJEdldFBhcmFte1JhdGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgRG8gbm90IHNob3cgdGhlIHZvdGluZyBmb3JtLgogICAgICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CgogICAgICAgICAgICAgICAgIyBSZWZyZXNoIEZBUSBpdGVtIGRhdGEuCiAgICAgICAgICAgICAgICAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBSZWRpcmVjdCB0byBGQVEgem9vbS4KICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgICAgICBPUCA9PiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtJdGVtSUR9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJztOYXY9JE5hdjtOb3RpZnk9VGhhbmtzJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBVc2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZC4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgUmVkaXJlY3QgdG8gRkFRIHpvb20KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScgLiAkR2V0UGFyYW17SXRlbUlEfSAuICc7TmF2PSROYXY7Tm90aWZ5PU5vUmF0ZScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBQcmVwYXJlIGZpZWxkcyBkYXRhIChTdGlsbCBuZWVkZWQgZm9yIFBsYWluVGV4dCkuCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgUmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbiwgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54LgogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e0FjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBObyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkLgogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcuCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBHZXQgdXNlciBpbmZvIChDcmVhdGVkQnkpLgogICAgbXkgJVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRkFRRGF0YXtDcmVhdGVkQnl9CiAgICApOwogICAgJFBhcmFte0NyZWF0ZWRCeVVzZXJ9ID0gIiRVc2VySW5mb3tVc2VyRnVsbG5hbWV9IjsKCiAgICAjIEdldCB1c2VyIGluZm8gKENoYW5nZWRCeSkuCiAgICAlVXNlckluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5VXNlcn0gPSAiJFVzZXJJbmZve1VzZXJGdWxsbmFtZX0iOwoKICAgICMgU2V0IHZvdGluZyByZXN1bHRzLgogICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICRMYXlvdXRPYmplY3QtPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICk7CgogICAgaWYgKCAhJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSB8fCAkRkFRRGF0YXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAnR3JheSc7CiAgICB9CgogICAgaWYgKCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgIyBSdW4gRkFRIG1lbnUgbW9kdWxlcy4KICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIG15ICVNZW51cyAgID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICMgTG9hZCBtb2R1bGUuCiAgICAgICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudX0tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIFNldCBDU1MgY2xhc3Nlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnUG9wVXAnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e0NsYXNzfSA9ICdBc1BvcHVwJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdCYWNrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnSGlzdG9yeUJhY2snOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0NvbmZpcm1hdGlvbkRpYWxvZycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0FzQ29uZmlybWF0aW9uRGlhbG9nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgUnVuIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICAkQ291bnRlciA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGQVFJdGVtID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyAgPT4gJE1lbnVzeyRNZW51fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVudUlEICA9PiAnTWVudScgLiAkTWVudSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIE91dHB1dCBhcHByb3ZhbCBzdGF0ZS4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKICAgICAgICAkUGFyYW17QXBwcm92YWx9ID0gJEZBUURhdGF7QXBwcm92ZWR9ID8gJ1llcycgOiAnTm8nOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdWaWV3QXBwcm92YWwnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCRWb3RpbmcpIHsKCiAgICAgICAgIyBPdXRwdXQgdm90ZXMgbnVtYmVyIGlmIGFueS4KICAgICAgICBpZiAoICRGQVFEYXRhe1ZvdGVzfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdWaWV3Vm90ZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBPdGhlcndpc2UgZGlzcGxheSBhIE5vIFZvdGVzIGZvdW5kIG1lc3NhZ2UuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdWaWV3Tm9Wb3RlcycgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFNob3dGQVFQYXRoID0gJExheW91dE9iamVjdC0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgUGF0aEZvckl0ZW0gPT4gMSwKICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICBOYXYgID0+ICROYXYsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzLgogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgUmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMuCiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvLC8gL2c7CiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvOy8gL2c7CgogICAgICAgIG15IEBLZXl3b3JkcyA9IHNwbGl0IC9ccysvLCAkRkFRRGF0YXtLZXl3b3Jkc307CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChAS2V5d29yZHMpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBTaG93IGxhbmd1YWdlcy4KICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE91dHB1dCByYXRpbmcgc3RhcnMuCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJE5hdiBuZSAnTm9uZScgKSB7CgogICAgICAgICMgT3V0cHV0IGV4aXN0aW5nIGF0dGFjaG1lbnRzLgogICAgICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBPdXRwdXQgaGVhZGVyIGFuZCBhbGwgYXR0YWNobWVudHMuCiAgICAgICAgaWYgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50Um93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU2hvdyBtZXNzYWdlIGFib3V0IGxpbmtzIGluIGlmcmFtZXMsIGlmIHVzZXIgZGlkbid0IGNsb3NlIGl0IGFscmVhZHkuCiAgICBpZiAoICEkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0Jyb3dzZXJMaW5rTWVzc2FnZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cgRkFRIENvbnRlbnQuCiAgICBteSAkRkFRQm9keSA9ICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgUmV0dXJuQ29udGVudCAgID0+IDEsCiAgICApOwoKICAgICMgR2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUuCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuLgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIEdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZC4KICAgICAgICBteSAkVmFsdWVTdHJnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJEZBUURhdGF7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjUwLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICAjIFNob3cgRkFRIFZvdGluZy4KICAgICAgICBpZiAoJFZvdGluZykgewoKICAgICAgICAgICAgIyBHZXQgdm90aW5nIGNvbmZpZy4KICAgICAgICAgICAgbXkgJFNob3dWb3RpbmdDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpTaG93Jyk7CiAgICAgICAgICAgIGlmICggJFNob3dWb3RpbmdDb25maWctPnsgJEludGVyZmFjZS0+e05hbWV9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdXNlciBhbHJlYWR5IHZvdGVkIGFmdGVyIGxhc3QgY2hhbmdlLgogICAgICAgICAgICAgICAgaWYgKCAhJEFscmVhZHlWb3RlZCApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IGxpbmtlZCBvYmplY3RzLgogICAgICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRDb25maWdPYmplY3QtPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAgICAgIyBDcmVhdGUgdGhlIGxpbmsgdGFibGUuCiAgICAgICAgbXkgJExpbmtUYWJsZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgT3V0cHV0IHRoZSBsaW5rIHRhYmxlLgogICAgICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMaW5rVGFibGVTdHJnID0+ICRMaW5rVGFibGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBMb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0uCiAgICAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICksCiAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntOYW1lfSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIFN0YXJ0IHRlbXBsYXRlIG91dHB1dC4KICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBPbmx5IGNvbnZlcnQgSFRNTCB0byBwbGFpbiB0ZXh0IGlmIHJpY2ggdGV4dCBlZGl0b3IgaXMgbm90IHVzZWQuCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0gPSAkRkFRQm9keTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRGQVFEYXRhe0Z1bGxCb2R5fSA9ICRIVE1MVXRpbHNPYmplY3QtPlRvQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZBUUJvZHksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0aGUgcHVibGljIHN0YXRlIHR5cGUuCiAgICAgICAgbXkgJFB1YmxpY1N0YXRlVHlwZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgUmVtb3ZlIGluLWxpbmUgaW1hZ2UgbGlua3MgdG8gRkFRIGltYWdlcy4KICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0KICAgICAgICAgICAgPX4gc3sgPGltZyBbXjw+XSsgQWN0aW9uPShBZ2VudHxDdXN0b21lcnxQdWJsaWMpRkFRIFtePD5dKyA+IH17fWd4bXM7CgogICAgICAgICMgR2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UuCiAgICAgICAgbXkgJFRpY2tldENvbXBvc2VDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgICAgICAkUGFyYW17VXBkYXRlQXJ0aWNsZVN1YmplY3R9ID0gJFRpY2tldENvbXBvc2VDb25maWctPntVcGRhdGVBcnRpY2xlU3ViamVjdH0gfHwgMDsKICAgICAgICBpZiAoICRQYXJhbXtVcGRhdGVBcnRpY2xlU3ViamVjdH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXBkYXRlQXJ0aWNsZVN1YmplY3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldENvbXBvc2UuVXBkYXRlQXJ0aWNsZVN1YmplY3QnLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VXBkYXRlQXJ0aWNsZVN1YmplY3R9LAogICAgICAgICk7CgogICAgICAgIG15ICRTaG93T3JCbG9jazsKCiAgICAgICAgIyBTaG93ICJJbnNlcnQgVGV4dCIgYnV0dG9uLgogICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0VGV4dEJ1dHRvbn0gKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9CiAgICAgICAgICAgICAgICAmJiAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e0luc2VydE1ldGhvZH0gZXEgJ0Z1bGwnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydEZ1bGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0VGV4dCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTaG93T3JCbG9jayA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIEZBUSBhcnRpY2xlIGlzIHB1YmxpYy4KICAgICAgICBpZiAoICRGQVFEYXRhe1N0YXRlVHlwZUlEfSA9PSAkUHVibGljU3RhdGVUeXBlLT57U3RhdGVJRH0gKSB7CgogICAgICAgICAgICBteSAkSFRUUFR5cGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJyk7CiAgICAgICAgICAgIG15ICRGUUROICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwogICAgICAgICAgICBteSAkQmFzZWxpbmsgPSAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9OwoKICAgICAgICAgICAgIyBSZXdyaXRlIGhhbmRsZS4KICAgICAgICAgICAgJEJhc2VsaW5rCiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSB9e3B1YmxpYy5wbD99Z3htczsKCiAgICAgICAgICAgICRGQVFEYXRhe1B1YmxpY2xpbmt9ID0gJEhUVFBUeXBlIC4gJzovLycgLiAkRlFETiAuICRCYXNlbGluawogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRGQVFEYXRhe0l0ZW1JRH0iOwoKICAgICAgICAgICAgI1NzaG93ICJJbnNlcnQgTGluayIgYnV0dG9uLgogICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0luc2VydExpbmtCdXR0b259ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0TGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2hvd09yQmxvY2sgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNob3cgIkluc2VydCBUZXh0IGFuZCBMaW5rIiBidXR0b24uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0VGV4dEFuZExpbmtCdXR0b259ICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9CiAgICAgICAgICAgICAgICAgICAgJiYgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9IGVxICdGdWxsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0RnVsbEFuZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0VGV4dEFuZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkU2hvd09yQmxvY2sgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnWm9vbVNtYWxsQnV0dG9uJzsKCiAgICAgICAgIyBTaG93IHRoZSAiT3IiIGJsb2NrIGJldHdlZW4gdGhlIGJ1dHRvbnMgYW5kIHRoZSBDYW5jZWwgJiBjbG9zZSB3aW5kb3cgbGFiZWwuCiAgICAgICAgaWYgKCRTaG93T3JCbG9jaykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ09yJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNldCB0aGUgJENhbmNlbEJ1dHRvbkNsYXNzIHRvICcnLgogICAgICAgICAgICAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnJzsKICAgICAgICB9CgogICAgICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50RkFRWm9vbVNtYWxsJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVpvb21TbWFsbCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENhbmNlbEJ1dHRvbkNsYXNzID0+ICRDYW5jZWxCdXR0b25DbGFzcyB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIH0KCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nJywKICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICApOwoKICAgICMgR2V0IFZvdGluZyByYXRlcyBzZXR0aW5nLgogICAgbXkgJFZvdGluZ1JhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgIGZvciBteSAkUmF0ZVZhbHVlICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskVm90aW5nUmF0ZXN9ICkgewoKICAgICAgICAjIENyZWF0ZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3V0cHV0LgogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBWYWx1ZSA9PiAkUmF0ZVZhbHVlLAogICAgICAgICAgICBUaXRsZSA9PiAkVm90aW5nUmF0ZXMtPnskUmF0ZVZhbHVlfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nUmF0ZVJvdycsCiAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ICAgICA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgMjAwOwogICAgbXkgJFNlYXJjaFBhZ2VTaG93biA9ICRDb25maWctPntTZWFyY2hQYWdlU2hvd259IHx8IDM7CiAgICBteSAkU29ydEJ5ICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXInICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5JyApIHx8ICcnOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIENhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXZlcnNlIHRoZSBoYXMgZm9yIGVhc3kgbG9va3VwCiAgICAgICAgbXkgJVJldmVyc2VDYXRlZ29yeVRyZWUgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgICRDYXRlZ29yeUlEID0gJFJldmVyc2VDYXRlZ29yeVRyZWV7JENhdGVnb3J5fSB8fCAwOwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzdG9yZSB0aGUgbGFzdCBzY3JlZW4gb3ZlcnZpZXcgaW4gc2Vzc2lvbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJycsCiAgICApOwoKICAgICMgQWRkSlNEYXRhIGZvciBFUwogICAgbXkgJEVTQWN0aXZlID0gJENvbmZpZ09iamVjdC0+R2V0KCAnRWxhc3RpY3NlYXJjaDo6QWN0aXZlJyApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRVNBY3RpdmUnLAogICAgICAgIFZhbHVlID0+ICRFU0FjdGl2ZSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKCiAgICBteSAkQ2F0ZWdvcnlJRHNSZWY7CiAgICBteSAlU2VhcmNoOwogICAgbXkgJUZBUVNlYXJjaDsKCiAgICAjIHNob3cgc2VhcmNoIHJlc3VsdHMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259ICYmICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyApIHsKICAgICAgICBteSAkU2VhcmNoTmFtZSA9IFRyYW5zbGF0YWJsZSgiU2VhcmNoIikuIjoiOwogICAgICAgIGZvciBteSAkTW9kZSAoIHF3L0tleXdvcmQgV2hhdC8gKSB7CiAgICAgICAgICAgIG15ICRTdHJpbmcgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTW9kZSApOwogICAgICAgICAgICBpZiAoICRTdHJpbmcgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoeyAkTW9kZSB9ID0gJFN0cmluZzsKICAgICAgICAgICAgICAgICRGQVFTZWFyY2h7ICRNb2RlIH0gPSAiKiRTdHJpbmcqIjsKICAgICAgICAgICAgICAgIG15ICRNb2RlTmFtZSA9ICRNb2RlIGVxICdXaGF0JyA/ICdGdWxsdGV4dCcgOiAkTW9kZTsKICAgICAgICAgICAgICAgICRTZWFyY2hOYW1lIC49ICIgIi5UcmFuc2xhdGFibGUoJE1vZGVOYW1lKS4iIFwiJFN0cmluZ1wiOyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGNhdGVnb3J5IHJvb3QgKCBkb25lIGluIExheW91dE9iamVjdCBmb3Igbm9uIHNlYXJjaGVzICkKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aENhdGVnb3J5RWxlbWVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6Um9vdENhdGVnb3J5TmFtZScpLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgIyBvdXRwdXQgc2VhcmNoIGluZm9ybWF0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFNlYXJjaE5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkaXNhYmxlIGNhdGVnb3J5IHNwZWNpZmljIHN0dWZmCiAgICAgICAgJENhdGVnb3J5SUQgPSAtMTsKICAgIH0KCiAgICAjIG5vIHNlYXJjaCAoIHN0YW5kYXJkIG1vZGUgKQogICAgZWxzZSB7IAogICAgICAgICMgc2hvdyBGQVEgcGF0aAogICAgICAgICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgICAgICBGQVFPYmplY3QgID0+ICRGQVFPYmplY3QsCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGFsbCBkaXJlY3Qgc3ViY2F0ZWdvcmllcyBvZiB0aGUgc2VsZWN0ZWQgY2F0ZWdvcnkKICAgICAgICAkQ2F0ZWdvcnlJRHNSZWYgPSAkRkFRT2JqZWN0LT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgaW50ZXJmYWNlIHN0YXRlcyBsaXN0CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBpZiB0aGVyZSBhcmUgc3ViY2F0ZWdvcmllcwogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBzaG93IHN1YmNhdGVnb3JpZXMgbGlzdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkKICAgICAgICBmb3IgbXkgJFN1YkNhdGVnb3J5SUQgKCBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICAgICBteSAlU3ViQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBzdWJjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe1N1YkNhdGVnb3J5Q291bnR9ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlDb3VudCgKICAgICAgICAgICAgICAgIFBhcmVudElEcyA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2YgRkFRIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVTdWJDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGluY2x1ZGUgQ2F0ZWdvcnkgaWYgbm90IGluIGJhc2UgQ2F0ZWdvcnkgKDApLCBvciBzZWFyY2ggbW9kZQogICAgaWYgKCAkQ2F0ZWdvcnlJRCA+IDAgKSB7CiAgICAgICAgJEZBUVNlYXJjaHtDYXRlZ29yeUlEc30gPSBbJENhdGVnb3J5SURdLAogICAgfQoKICAgICMgZ2V0IHRoZSBsYXRlc3QgYXJ0aWNsZXMgZm9yIHRoZSByb290IGNhdGVnb3J5IChlbHNlIGVtcHR5KQogICAgZWxzaWYgKCAhJVNlYXJjaCApIHsKICAgICAgICAkU29ydEJ5ID0gJ0NoYW5nZWQnOwogICAgICAgICRPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICRTZWFyY2hMaW1pdCA9IDEwOwogICAgfQoKICAgICMgc2VhcmNoIGFsbCBGQVEgYXJ0aWNsZXMgd2l0aGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFskT3JkZXJCeV0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAlRkFRU2VhcmNoLAogICAgKTsKCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzCiAgICBteSAkU29ydENsYXNzOwoKICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0ZSB0byB0aGUgT3JkZXJCeSBwYXJhbWV0ZXIKICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICB9CiAgICBlbHNpZiAoICRPcmRlckJ5IGVxICdVcCcgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICB9CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgbXkgJUNTU1NvcnQ7CiAgICBteSAkQ1NTU29ydEJ5ID0gJFNvcnRCeSAuICdTb3J0JzsKICAgICRDU1NTb3J0eyRDU1NTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgRG93biA9PiAnVXAnLAogICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgKTsKCiAgICAjIHNob3cgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUl0ZW1MaXN0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIGlmIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgIGZvciBteSAkSXRlbUlEIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRTZWFyY2hQYWdlU2hvd24gKyAkU3RhcnRIaXQgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEZBUURhdGF7Q2xlYW5UaXRsZX0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgU2l6ZSAgPT4gJENvbmZpZy0+e1RpdGxlU2l6ZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRkFRRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KSAuICc7JzsKICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CgogICAgbXkgJEFjdGlvblN0cmluZzsKICAgIGlmICggJVNlYXJjaCApIHsKICAgICAgICAkQWN0aW9uU3RyaW5nID0gIkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO1N1YmFjdGlvbj1TZWFyY2g7IjsKCQlpZiAoICRGQVFTZWFyY2h7Q2F0ZWdvcnlJRHN9ICkgewoJCQkkQWN0aW9uU3RyaW5nIC49ICJDYXRlZ29yeUlEPSRDYXRlZ29yeUlEOyI7CgkJfQoJCWZvciBteSAkTW9kZSAoIGtleXMgJVNlYXJjaCApIHsKCQkJJEFjdGlvblN0cmluZyAuPSAiJE1vZGU9JFNlYXJjaHsgJE1vZGUgfTsiOwoJCX0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRBY3Rpb25TdHJpbmcgPSAiQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRCI7CiAgICB9CgogICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRTZWFyY2hQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAkQWN0aW9uU3RyaW5nLAogICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICBJRFByZWZpeCAgPT4gIkN1c3RvbWVyRkFRRXhwbG9yZXIiLAogICAgKTsKCiAgICBpZiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPX4gbS88c3BhblxzY2xhc3M9IlBhZ2luYXRpb25MaW1pdCI+KFxkLiopPFwvc3Bhbj4vZyApIHsKICAgICAgICAkUGFnZU5hdntUb3RhbEhpdHN9ID0gJDE7CiAgICB9CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VhcmNoUGFnZVNob3duICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2luYXRpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IFF1aWNrU2VhcmNoCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRUeXBlLAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRvcCB0ZW4gYXJ0aWNsZXMKICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgQ3VzdG9tZXJVc2VyICAgID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFFeHBsb3JlcicsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ2F0ZWdvcnlEYXRhLAogICAgICAgIH0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBubyBwZXJtaXNzaW9uIGVycm9yCiAgICBpZiAoCiAgICAgICAgISRQZXJtaXNzaW9uCiAgICAgICAgfHwgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkSW50ZXJmYWNlU3RhdGVzLT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBjdXN0b21lciBhbmQgcHVibGljIGludGVyZmFjZQogICAgICAgIGlmICggJEludGVyZmFjZS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtjdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tfWd4bXM7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBnZW5lcmF0ZSBQREYgb3V0cHV0CiAgICBteSAkUHJpbnRlZEJ5ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdwcmludGVkIGJ5Jyk7CiAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwogICAgbXkgJVBhZ2U7CgogICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICRQYWdle01heFBhZ2VzfSA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICB9CiAgICBteSAkSGVhZGVyUmlnaHQgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICRGQVFEYXRhe051bWJlcn07CiAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgbXkgJFRpdGxlICAgICAgICA9ICRIZWFkZXJSaWdodDsKICAgIGlmICggJEZBUURhdGF7VGl0bGV9ICkgewogICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgJFRpdGxlIC49ICcgLyAnIC4gJEZBUURhdGF7VGl0bGV9OwogICAgfQoKICAgICRQYWdle01hcmdpblRvcH0gICAgID0gMzA7CiAgICAkUGFnZXtNYXJnaW5SaWdodH0gICA9IDQwOwogICAgJFBhZ2V7TWFyZ2luQm90dG9tfSAgPSA0MDsKICAgICRQYWdle01hcmdpbkxlZnR9ICAgID0gNDA7CiAgICAkUGFnZXtIZWFkZXJSaWdodH0gICA9ICRIZWFkZXJSaWdodDsKICAgICRQYWdle0hlYWRsaW5lUmlnaHR9ID0gJFByaW50ZWRCeSAuICcgJwogICAgICAgIC4gJFNlbGYtPntVc2VyRnVsbG5hbWV9IC4gJyAoJwogICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJykgJwogICAgICAgIC4gJFRpbWU7CiAgICAkUGFnZXtQYWdlVGV4dH0gID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAkUGFnZXtQYWdlQ291bnR9ID0gMTsKCiAgICAjIGNyZWF0ZSBuZXcgUERGIGRvY3VtZW50CiAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBmaXJzdCBQREYgcGFnZQogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgRm9udFNpemUgPT4gMTMsCgogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRnVsbG5hbWV9IC4gJyAoJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpJwogICAgICAgICAgICAuICcsICcgLiAkVGltZSwKICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNCwKICAgICk7CgogICAgIyB0eXBlIG9mIHByaW50IHRhZwogICAgbXkgJFByaW50VGFnID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZSBQcmludCcpOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRQcmludFRhZywKICAgICAgICBIZWlnaHQgICA9PiA5LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkJywKICAgICAgICBBbGlnbiAgICA9PiAncmlnaHQnLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCBGQVEgaW5mb3JtYXRpb24KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFEeW5hbWljRmllbGRzKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgICRTZWxmLT5fUERGT3VwdXRGQVFDb250ZW50KAogICAgICAgIFBhZ2VEYXRhICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICk7CgogICAgIyBSZXR1cm4gdGhlIFBERiBkb2N1bWVudC4KICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfJyAuICRGQVFEYXRhe051bWJlcn07CgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICBteSAkRGF0ZVRpbWUgICAgICAgPSAkRGF0ZVRpbWVPYmplY3QtPkdldCgpOwogICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICBteSAkTSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01vbnRofSApOwogICAgbXkgJEQgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntEYXl9ICk7CiAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICBteSAkbSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01pbnV0ZX0gKTsKCiAgICBteSAkUERGU3RyaW5nID0gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKTsKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgKTsKfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZGVmYXVsdCBtdWx0aSBsYW5ndWFnZSBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIGxhbmd1YWdlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgICMgZ2V0IGRlZmF1bHQgdm90aW5nIG9wdGlvbgogICAgbXkgJFZvdGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICAjIHZvdGluZyByb3dzLCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJFRhYmxlUmlnaHQgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVm90ZXMnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgbGFzdCB1cGRhdGUgcm93CiAgICBwdXNoIEB7JFRhYmxlUmlnaHR9LCB7CiAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IHVwZGF0ZScpIC4gJzonLAogICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAnRGF0ZUZvcm1hdCcsCiAgICAgICAgKSwKICAgIH07CgogICAgbXkgJFJvd3MgPSBAeyRUYWJsZUxlZnR9OwogICAgaWYgKCBAeyRUYWJsZVJpZ2h0fSA+ICRSb3dzICkgewogICAgICAgICRSb3dzID0gQHskVGFibGVSaWdodH07CiAgICB9CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgJFJvdy0tOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e1ZhbHVlfTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17Q29udGVudH0gICAgICAgICA9ICcgJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17QmFja2dyb3VuZENvbG9yfSA9ICcjRkZGRkZGJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVs0XXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMl17V2lkdGh9ID0gNDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzNde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bNF17V2lkdGh9ID0gMTcwLjU7CgogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0S2V5d29yZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBnZXQgUERGIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnS2V5d29yZHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICRPdXRwdXQgPSAwOwogICAgbXkgJUZBUSAgICA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciBmcm9udGVuZCBtb2R1bGUKICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUHJpbnQiKS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydGQVEnXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2VuZXJhdGUgdGFibGUKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgc2tpcCBkeW5hbWljIGZpZWxkIGlmIGlzIG5vdCBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgbXkgJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEZBUXtGQVFJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRWYWx1ZTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkVmFsdWUgZXEgIiI7CgogICAgICAgICMgZ2V0IHByaW50IHN0cmluZyBmb3IgdGhpcyBkeW5hbWljIGZpZWxkCiAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0KICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKQogICAgICAgICAgICAuICc6JzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgJFJvdysrOwogICAgICAgICRPdXRwdXQgPSAxOwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgb3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcwogICAgaWYgKCRPdXRwdXQpIHsKCiAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRkFRIER5bmFtaWMgRmllbGRzJyksCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCB0aGUgY29uZmlnIG9mIEZBUSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgIG15ICVGaWVsZHM7CiAgICBOVU1CRVI6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgTlVNQkVSIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgc3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICRGaWVsZHN7ICJGaWVsZCIgLiAkTnVtYmVyIH0gPSAkQ29uZmlnOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkUERGT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIEFTQ0lJCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRTdWJqZWN0ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3ViamVjdCcgKTsKICAgIG15ICRCb2R5ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQm9keScgKTsKICAgIG15ICRTZXJ2aWNlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VydmljZUlEJyApOwoKICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7CiAgICBteSAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmc7CgogICAgbXkgJENvbmZpZyAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZ2V0IEZBUXMgYnkgc2VydmljZSBvbmx5LCBpZiBGQVE6OkN1c3RvbWVyOjpSZWxhdGVkQXJ0aWNsZXNPblNlcnZpY2VPbmx5CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRGQVFTZXJ2aWNlc0VuYWJsZWQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6U2VydmljZScpOwogICAgbXkgJFNob3dPblNlcnZpY2VPbmx5ICA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6UmVsYXRlZEFydGljbGVzT25TZXJ2aWNlT25seScpOwogICAgbXkgJVNlcnZpY2VJRCA9ICRGQVFTZXJ2aWNlc0VuYWJsZWQgPyAoIFNlcnZpY2VJRCA9PiAkU2VydmljZUlEICkgOiAoKTsKCiAgICBpZiAoICRGQVFTZXJ2aWNlc0VuYWJsZWQgJiYgISRTZXJ2aWNlSUQgKSB7CiAgICAgICAgJFJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nID0gMTsKICAgIH0KICAgIGVsc2lmICggJEZBUVNlcnZpY2VzRW5hYmxlZCAmJiAkU2hvd09uU2VydmljZU9ubHkgJiYgJFNlcnZpY2VJRCApIHsKCiAgICAgICAgIyBHZXQgdGhlIGxhbmd1YWdlIGZyb20gdGhlIHVzZXIgYW5kIGFkZCB0aGUgZGVmYXVsdCBsYW5ndWFnZXMgZnJvbSB0aGUgY29uZmlnLgogICAgICAgIG15ICRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlcyA9ICRDb25maWctPnsnRGVmYXVsdExhbmd1YWdlcyd9IHx8IFtdOwoKICAgICAgICAjIENoZWNrIGlmIHRoZSB1c2VyIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzLgogICAgICAgIG15ICVMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXNMYW5ndWFnZSA9IG1hcCB7ICRfID0+IDEgfSBAeyRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlc307CiAgICAgICAgaWYgKCAhJExvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc0xhbmd1YWdleyAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfSB9ICkgewogICAgICAgICAgICBwdXNoIEB7JFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzfSwgJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX07CiAgICAgICAgfQoKICAgICAgICBAUmVsYXRlZEZBUUFydGljbGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5SZWxhdGVkQ3VzdG9tZXJTZXJ2aWNlQXJ0aWNsZUxpc3QoCiAgICAgICAgICAgICVTZXJ2aWNlSUQsCiAgICAgICAgICAgIExhbmd1YWdlcyA9PiAkUmVsYXRlZEFydGljbGVMYW5ndWFnZXMsCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkQ29uZmlnLT57U2hvd0xpbWl0fSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICFAUmVsYXRlZEZBUUFydGljbGVMaXN0ICkgewogICAgICAgICAgICAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmcgPSAxOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFN1YmplY3QgfHwgJEJvZHkgKSB7CiAgICAgICAgIyBHZXQgdGhlIGxhbmd1YWdlIGZyb20gdGhlIHVzZXIgYW5kIGFkZCB0aGUgZGVmYXVsdCBsYW5ndWFnZXMgZnJvbSB0aGUgY29uZmlnLgogICAgICAgIG15ICRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlcyA9ICRDb25maWctPnsnRGVmYXVsdExhbmd1YWdlcyd9IHx8IFtdOwoKICAgICAgICAjIENoZWNrIGlmIHRoZSB1c2VyIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzLgogICAgICAgIG15ICVMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXNMYW5ndWFnZSA9IG1hcCB7ICRfID0+IDEgfSBAeyRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlc307CiAgICAgICAgaWYgKCAhJExvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc0xhbmd1YWdleyAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfSB9ICkgewogICAgICAgICAgICBwdXNoIEB7JFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzfSwgJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX07CiAgICAgICAgfQoKICAgICAgICBAUmVsYXRlZEZBUUFydGljbGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5SZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCgKICAgICAgICAgICAgJVNlcnZpY2VJRCwKICAgICAgICAgICAgU3ViamVjdCAgID0+ICRTdWJqZWN0LAogICAgICAgICAgICBCb2R5ICAgICAgPT4gJEJvZHksCiAgICAgICAgICAgIExhbmd1YWdlcyA9PiAkUmVsYXRlZEFydGljbGVMYW5ndWFnZXMsCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkQ29uZmlnLT57U2hvd0xpbWl0fSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICFAUmVsYXRlZEZBUUFydGljbGVMaXN0ICkgewogICAgICAgICAgICAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmcgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdlbmVyYXRlIHRoZSBodG1sIGZvciB0aGUgd2lkZ2V0LgogICAgbXkgJEN1c3RvbWVyUmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgICAgICAgICA9PiBcQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCwKICAgICAgICAgICAgUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmcgPT4gJFJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nLAogICAgICAgICAgICBWb3RlU3RhcnNWaXNpYmxlICAgICAgICAgICAgICA9PiAkQ29uZmlnLT57Vm90ZVN0YXJzVmlzaWJsZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcgPT4gJEN1c3RvbWVyUmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIGVtcHR5IEpTT04gb3V0cHV0IGlmIEpTT04gaXMgZW1wdHkKICAgIGlmICggISRKU09OICkgewogICAgICAgICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgICMgc2VuZCBKU09OIHJlc3BvbnNlCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJER5bmFtaWNGaWVsZEZpbHRlciA9ICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgKTsKCiAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICBteSBAQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJywKICAgICAgICApOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGU7CgogICAgICAgIHB1c2ggQEN1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgIH0KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9IFxAQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGZyb20gY29uc3RydWN0b3IKICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ICAgICA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgMjAwOwogICAgbXkgJFNlYXJjaFBhZ2VTaG93biA9ICRDb25maWctPntTZWFyY2hQYWdlU2hvd259IHx8IDQwOwogICAgbXkgJFNvcnRCeSAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgIG15ICRQcm9maWxlICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApICAgICAgICB8fCAnJzsKICAgIG15ICRTYXZlUHJvZmlsZSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTYXZlUHJvZmlsZScgKSAgICB8fCAnJzsKICAgIG15ICRUYWtlTGFzdFNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKSB8fCAnJzsKICAgIG15ICRFcmFzZVRlbXBsYXRlICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFcmFzZVRlbXBsYXRlJyApICB8fCAnJzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZQogICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VhcmNoVGVtcGxhdGUnICkgJiYgJFByb2ZpbGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRQcm9maWxlIiwKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBGQVEgbnVtYmVyCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IGZ1bGwtdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgcmVtZW1iZXIgZXhjbHVkZSBhdHRyaWJ1dGVzCiAgICBteSBARXhjbHVkZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhjbHVkZScgKTsKCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkKICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyAmJiAkUHJvZmlsZSApIHx8ICRUYWtlTGFzdFNlYXJjaCApIHsKICAgICAgICAlR2V0UGFyYW0gPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgIGVsc2UgewogICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBUaW1lU2VhcmNoVHlwZSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlCiAgICAgICAgICAgIFZvdGVTZWFyY2hPcHRpb24gUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZXNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzICkpIHsKCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICAgICAgICAgIGlmIChAQXJyYXkpIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9IFxAQXJyYXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IER5bmFtaWMgZmllbGRzIGZvcm0gcGFyYW0gb2JqZWN0CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFJldHVyblByb2ZpbGVTdHJ1Y3R1cmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgICMgcHJvZmlsZQogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpICkgewogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSA9ICggJUdldFBhcmFtLCAleyREeW5hbWljRmllbGRWYWx1ZX0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGl0ZW0gbmVlZCB0byBnZXQgZXhjbHVkZWQKICAgIGZvciBteSAkRXhjbHVkZSAoQEV4Y2x1ZGVzKSB7CiAgICAgICAgaWYgKCAkR2V0UGFyYW17JEV4Y2x1ZGV9ICkgewogICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyRFeGNsdWRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdm90ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSBlcSAnVm90ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCByYXRlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259IGVxICdSYXRlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6UmF0ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHRpbWUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBzZXQgcmVzdWx0IGZvcm0gRU5WCiAgICBpZiAoICEkR2V0UGFyYW17UmVzdWx0Rm9ybX0gKSB7CiAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19ID0gJyc7CiAgICB9CiAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICRTZWFyY2hQYWdlU2hvd24gPSAkU2VhcmNoTGltaXQ7CiAgICB9CgogICAgIyBjaGVjayByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb24ueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG11bHRpIGxhbmd1YWdlIG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyByZXN1bHQgcGFnZQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaCcgJiYgISRFcmFzZVRlbXBsYXRlICkgewoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFByb2ZpbGUgfHwgISRTYXZlUHJvZmlsZSApIHsKICAgICAgICAgICAgJFByb2ZpbGUgPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0kUHJvZmlsZSIKICAgICAgICAgICAgLiAiO1NvcnRCeT0kU29ydEJ5O09yZGVyQnk9JE9yZGVyQnk7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSRTdGFydEhpdCI7CgogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICMgc3RvcmUgbGFzdCBzY3JlZW4KICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSBzZWFyY2ggcHJvZmlsZSAodW5kZXIgbGFzdC1zZWFyY2ggb3IgcmVhbCBwcm9maWxlIG5hbWUpCiAgICAgICAgJFNhdmVQcm9maWxlID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTYXZlUHJvZmlsZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkUGFyYW1OYW1lICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskUGFyYW1OYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBGQVEgc2VhcmNoCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaERpc3BsYXk7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgICAgIFJldHVyblByb2ZpbGVTdHJ1Y3R1cmUgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiAlRHluYW1pY0ZpZWxkVmFsdWVzIHRvIGRpc2NhcmQgdGhvc2Ugd2hlcmUgdGhlCiAgICAgICAgICAgICAgICAjIHZhbHVlIHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIGdldAogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpOwoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB2YWx1ZSB0byBkaXNwbGF5CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaERpc3BsYXl7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJFNlYXJjaFBhcmFtZXRlci0+e0Rpc3BsYXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIGdldCBjcmVhdGUgdGltZSBzZXR0aW5ncwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIGxhc3QgLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBVc2VyQ2F0ZWdvcnlHcm91cCBIYXNoLgogICAgICAgICMgVGhpcyByZXR1cm5zIGEgSGFzaCBvZiB0aGUgZm9sbG93aW5nIHNhbXBsZSBkYXRhIHN0cnVjdHVyZToKICAgICAgICAjCiAgICAgICAgIyAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgPSB7CiAgICAgICAgIyAgICcxJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAnMycgPT4gJ01pc2NTdWInCiAgICAgICAgIyAgICAgICAgfSwKICAgICAgICAjICAgJzMnID0+IHt9LAogICAgICAgICMgICAnMCcgPT4gewogICAgICAgICMgICAgICAgICAgICAnMScgPT4gJ01pc2MnLAogICAgICAgICMgICAgICAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAjICAgICAgICAgIH0sCiAgICAgICAgIyAgICcyJyA9PiB7fQogICAgICAgICMgfTsKICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBvdXRlciBoYXNoIGluZm9ybSBhYm91dCBzdWJjYXRlZ29yaWVzLgogICAgICAgICMgICAwIFNob3dzIHRvcCBsZXZlbCBDYXRlZ29yeUlEcy4KICAgICAgICAjICAgMSBTaG93cyB0aGUgU3ViY2F0ZWdvcnlJRHMgb2YgQ2F0ZWdvcnkgMS4KICAgICAgICAjICAgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJvIGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgRmluZCBDYXRlZ29yeUlEcyB0aGUgY3VycmVudCBVc2VyIGlzIGFsbG93ZWQgdG8gdmlldy4KICAgICAgICBteSAlQWxsb3dlZENhdGVnb3J5SURzID0gKCk7CgogICAgICAgIGlmICggJEN1c3RvbWVyVXNlckNhdEdyb3VwICYmIHJlZiAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgIyBTbyBub3cgd2UgaGF2ZSB0byBleHRyYWN0IGFsbCBDYXRlZ29yeSBJRCdzIG9mIHRoZSAiaW5uZXIgaGFzaGVzIgogICAgICAgICAgICAjICAgLT4gTG9vcCB0aHJvdWdoIHRoZSBvdXRlciBjYXRlZ29yeSBJRCdzLgogICAgICAgICAgICBmb3IgbXkgJExldmVsICggc29ydCBrZXlzICV7JEN1c3RvbWVyVXNlckNhdEdyb3VwfSApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBWYWx1ZSBvZiB0aGUgY3VycmVudCBoYXNoIGtleSBpcyBhIGhhc2ggcmVmLgogICAgICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9ICYmIHJlZiAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBNYXAgdGhlIGtleXMgb2YgdGhlIGlubmVyIGhhc2ggdG8gYSBUZW1wSURzIGhhc2guCiAgICAgICAgICAgICAgICAgICAgIyBPcmlnaW5hbCBEYXRhIHN0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAjICAgewogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzEnID0+ICdNaXNjJywKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICAgICAgICAgICAgICMgICB9CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICBhZnRlciBtYXBwaW5nOgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjICAgewogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzEnID0+IDEsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMicgPT4gMScKICAgICAgICAgICAgICAgICAgICAjICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAlVGVtcElEcyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRDdXN0b21lclVzZXJDYXRHcm91cC0+eyRMZXZlbH0gfTsKCiAgICAgICAgICAgICAgICAgICAgIyBQdXQgdGhlIFRlbXBJRHMgb3ZlciB0aGUgZm9ybWFsbHkgZm91bmQgQWxsb3dlZENhdGVnb3J5cyB0byBwcm9kdWNlIGEgaGFzaAogICAgICAgICAgICAgICAgICAgICMgICB0aGF0IGhvbGRzIGFsbCBDYXRlZ29yeUlEIGFzIGtleXMgYW5kIHRoZSBudW1iZXIgMSBhcyB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICAgICAgICAgJVRlbXBJRHMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZvciB0aGUgZGF0YWJhc2UgcXVlcnkgaXQncyBuZWNlc3NhcnkgdG8gaGF2ZSBhbiBhcnJheSBvZiBDYXRlZ29yeUlEcy4KICAgICAgICBteSBAQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCVBbGxvd2VkQ2F0ZWdvcnlJRHMpIHsKICAgICAgICAgICAgQENhdGVnb3J5SURzID0gc29ydCBrZXlzICVBbGxvd2VkQ2F0ZWdvcnlJRHM7CiAgICAgICAgfQoKICAgICAgICAjIENhdGVnb3JpZXMgZ290IGZyb20gdGhlIHdlYiByZXF1ZXN0IGNvdWxkIGluY2x1ZGUgYSBub3QgYWxsb3dlZCBjYXRlZ29yeSBpZiB0aGUgdXNlcgogICAgICAgICMgICAgdGVtcGVyIHdpdGggdGhlIGNhdGVnb3JpZXMgZHJvcC1ib3gsIGEgY2hlY2sgaXMgbmVlZGVkLgogICAgICAgICMKICAgICAgICAjICJNYXAiIGNvcHkgZnJvbSBvbmUgYXJyYXkgdG8gYW5vdGhlciwgd2hpbGUgImdyZXAiIHdpbGwgb25seSBsZXQgcGFzcyB0aGUgY2F0ZWdvcmllcwogICAgICAgICMgICAgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgJUFsbG93ZWRDYXRlZ29yeUlEcyBoYXNoLgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9ICkgKSB7CiAgICAgICAgICAgIEB7ICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gfSA9IG1hcCB7JF99IGdyZXAgeyAkQWxsb3dlZENhdGVnb3J5SURzeyRffSB9IEB7ICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gfTsKICAgICAgICB9CgogICAgICAgICMgSnVzdCBzZWFyY2ggaWYgd2UgZG8gaGF2ZSBjYXRlZ29yaWVzLCB3ZSBoYXZlIGFjY2VzcyB0by4KICAgICAgICAjIElmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGFueSBjYXRlZ29yeSwgYSBzZWFyY2ggd2l0aCBubyBDYXRlZ29yeUlEcwogICAgICAgICMgICB3b3VsZCByZXN1bHQgaW4gZmluZGluZyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBJdCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIEZBUSdzIHdpdGhvdXQgY2F0ZWdvcmllcwogICAgICAgICMgICBzbyBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkgaGFzIHRvIGJlIHByZXNlbnQKCiAgICAgICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICgpOwoKICAgICAgICBpZiAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgICAgICBAVmlld2FibGVJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICAgICAgICAgPT4gXEBDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICAjIGdldCB0aGUgRkFRIGR5bmFtaWMgZmllbGRzIGZvciBDU1YgZGlzcGxheQogICAgICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgICAgICBteSBAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENTVkR5bmFtaWNGaWVsZCA9IFxAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5mbyBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoJUZBUURhdGEpOwoKICAgICAgICAgICAgICAgICMgZm9ybWF0IHRoZSBjaGFuZ2UgdGltZQogICAgICAgICAgICAgICAgJENTVkluZm97Q2hhbmdlZH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0JywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICBxdyhTdGF0ZSBDaGFuZ2VkKTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDVlMgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJENTVkluZm97JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gRkFRIGl0ZW0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkICAgID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgb24gQ1ZTIHJlc3VsdHMKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NlbWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpLT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBSZXR1cm4gQ1NWIHRvIGRvd25sb2FkLgogICAgICAgICAgICBteSAkQ1NWRmlsZSA9ICdGQVFfc2VhcmNoJzsKCiAgICAgICAgICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBteSAkRGF0ZVRpbWUgICAgICAgPSAkRGF0ZVRpbWVPYmplY3QtPkdldCgpOwogICAgICAgICAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgICAgICAgICAgbXkgJE0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNb250aH0gKTsKICAgICAgICAgICAgbXkgJEQgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntEYXl9ICk7CiAgICAgICAgICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgICAgICAgICAgbXkgJG0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNaW51dGV9ICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjaGFuZ2UgZGF0ZSB0byBsb25nIGZvcm1hdAogICAgICAgICAgICAgICAgbXkgJENoYW5nZWQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFBERiBSb3dzCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbGFuZ3VhZ2Ugcm93CiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0xhbmd1YWdlfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkRkFRRGF0YXtTdGF0ZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkQ2hhbmdlZDsKICAgICAgICAgICAgICAgIHB1c2ggQFBERkRhdGEsIFxAUERGUm93OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFBERiBPdXRwdXQKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEnKSAuICcgJwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1NlYXJjaCcpOwogICAgICAgICAgICBteSAkUHJpbnRlZEJ5ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdwcmludGVkIGJ5Jyk7CiAgICAgICAgICAgIG15ICRQYWdlICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1BhZ2UnKTsKICAgICAgICAgICAgbXkgJFRpbWUgICAgICA9ICRMYXlvdXRPYmplY3QtPntUaW1lfTsKCiAgICAgICAgICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAgICAgICAgIG15ICRNYXhQYWdlcyA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgICAgICBpZiAoICEkTWF4UGFnZXMgfHwgJE1heFBhZ2VzIDwgMSB8fCAkTWF4UGFnZXMgPiAxMDAwICkgewogICAgICAgICAgICAgICAgJE1heFBhZ2VzID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIG91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgaWYgKEBQREZEYXRhKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGhlYWRlcgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVGl0bGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2F0ZWdvcnknKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIHRoZSBjb3JyZWN0IGhlYWRlciBpbmRleAogICAgICAgICAgICAgICAgbXkgJE5leHRIZWFkZXJJbmRleCA9IDM7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJyk7CiAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgICAgICROZXh0SGVhZGVySW5kZXggICAgICAgICAgICAgICA9IDQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGNvbnRlbnQgYXJyYXkKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyUm93ID0gMTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDb3VudGVyQ29sdW1uID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbnRlbnQgKCBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlskQ291bnRlclJvd10tPlskQ291bnRlckNvbHVtbl0tPntDb250ZW50fSA9ICRDb250ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRlckNvbHVtbisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ291bnRlclJvdysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBSZXN1bHQhJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGFnZSBwYXJhbXMKICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtQYWdlT3JpZW50YXRpb259ID0gJ2xhbmRzY2FwZSc7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luVG9wfSAgICAgICA9IDMwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Cb3R0b219ICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luTGVmdH0gICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CgogICAgICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICAgICBteSAlVGFibGVQYXJhbTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjREREREREJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICMgY3JlYXRlIG5ldyBQREYgZG9jdW1lbnQKICAgICAgICAgICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgICAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0YXJ0IHRhYmxlIG91dHB1dAogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAxJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGl0bGUKICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgPT4gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRnVsbG5hbWV9IC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJyknCiAgICAgICAgICAgICAgICAgICAgLiAnLCAnIC4gJFRpbWUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTE0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUEFHRToKICAgICAgICAgICAgZm9yICggMiAuLiAkTWF4UGFnZXMgKSB7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIGFub3RoZXIgcGFnZQogICAgICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnICcgLiAkXywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRX3NlYXJjaCc7CgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJERhdGVUaW1lICAgICAgID0gJERhdGVUaW1lT2JqZWN0LT5HZXQoKTsKICAgICAgICAgICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICAgICAgICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICAgICAgICAgIG15ICREICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57RGF5fSApOwogICAgICAgICAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICAgICAgICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgICAgICAgICAgbXkgJFBERlN0cmluZyA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICBteSAkT3ZlcnZpZXdDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRT3ZlcnZpZXciKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgZm9yIG92ZXJ2aWV3IGRpc3BsYXkKICAgICAgICAgICAgbXkgJE92ZXJ2aWV3RHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRPdmVydmlld0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcyB0YWJsZSBoZWFkZXJzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRPdmVydmlld0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICA9ICcnOwogICAgICAgICAgICAgICAgICAgIG15ICRPcmRlciA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0QnkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNvcnRCeSBlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntPcmRlcn0gJiYgKCAkU2VsZi0+e09yZGVyfSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciAgICAgICAgICAgID0+ICRPcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VhcmNoUGFnZVNob3duICsgJFN0YXJ0SGl0ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXtDbGVhblRpdGxlfSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskT3ZlcnZpZXdEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRGQVFEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWb3RlcycsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF0ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdSYXRlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgZWFjaCBhdHRyaWJ1dGUgaW4gc2VhcmNoIHJlc3VsdHMgYXJlYS4KICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJUF0dHJpYnV0ZU1hcCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVmaW5lZCBieSB0aGUgdXNlcgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskQXR0cmlidXRlfSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGUgbmFtZSBhbmQgdHJhbnNsYXRlIGl0IGlmIGFwcGxpZXMKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEF0dHJpYnV0ZU1hcHskQXR0cmlidXRlfS0+e05hbWV9OwogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57VHJhbnNsYXRhYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZVZhbHVlOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlcyBpcyBhbiBhcnJheSB0byBwYXJzZSBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBDYXRlZ29yeSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ0NhdGVnb3J5SURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBsb25nIG5hbWUgZm9yIGFsbCBjdXN0b21lciBjYXRlZ29yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDYXRlZ29yeUxpc3QgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGNhdGVnb3J5IGlkIHRvIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZG9yeUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBjYXRlZ29yeSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQENhdGVnb3J5TmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2VJRHMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0xhbmd1YWdlSURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGxhbmd1YWdlIGlkIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQExhbmd1YWdlTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VOYW1lcywgJExhbmd1YWdlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgbGFuZ3VhZ2UgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBMYW5ndWFnZU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGlzIGFuIHNjYWxhciBhbmQgY2FuIGJlIHNldCBkaXJlY3RseQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJEdldFBhcmFteyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdUaW1lU2VhcmNoVHlwZScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXJ0RGF0ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnREYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdG9wRGF0ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wWWVhcn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BNb250aH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BEYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBiZXR3ZWVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRTdGFydERhdGUgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU3RvcERhdGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hcHBpbmcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgd2l0aGluIHRoZSBsYXN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9ICRNYXBwaW5nLT57ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gLiAnKHMpJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1ZvdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSApIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFte1ZvdGVTZWFyY2h9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdSYXRlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtSYXRlU2VhcmNofSAuICclJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkQXR0cmlidXRlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRBdHRyaWJ1dGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICEkRHluYW1pY0ZpZWxkU2VhcmNoRGlzcGxheXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkTGluayA9ICdQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7JzsKICAgICAgICAkTGluayAuPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpIC4gJzsnOwogICAgICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CiAgICAgICAgJExpbmsgLj0gJ1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VhcmNoUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIElEUHJlZml4ICA9PiAiQ3VzdG9tZXJGQVFTZWFyY2giLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWFyY2hQYWdlU2hvd24gKSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IEhUTUwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgU2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgICAgICBteSAkU29ydENsYXNzOwoKICAgICAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdGUgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICAgICAgbXkgJUNTU1NvcnQ7CiAgICAgICAgbXkgJENTU1NvcnRCeSA9ICRTb3J0QnkgLiAnU29ydCc7CiAgICAgICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgICAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdVcCcpLAogICAgICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnRG93bicpLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciAgID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQcm9maWxlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGRlbGV0ZSBwcm9maWxlCiAgICAgICAgaWYgKCAkRXJhc2VUZW1wbGF0ZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwogICAgICAgICAgICAlR2V0UGFyYW0gPSAoKTsKICAgICAgICAgICAgJFByb2ZpbGUgID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c30tPntEeW5hbWljRmllbGR9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlybWF0aW9uQ2hlY2tib3hlcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlICAgICAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBBcmVhICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBNYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIHNldCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICBteSAlUmVzdWx0Rm9ybSA9ICgKICAgICAgICBOb3JtYWwgPT4gVHJhbnNsYXRhYmxlKCdOb3JtYWwnKSwKICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlUHJvZmlsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpLT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVByb2ZpbGVzfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17UHJvZmlsZX0sCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPkdldEN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgY2F0ZWdvcmllcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0NhdGVnb3JpZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgIFRyZWVWaWV3ICAgPT4gJFRyZWVWaWV3LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFcXVhbHMnKSwKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbicpLAogICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuIGVxdWFscycpLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuJyksCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4gZXF1YWxzJyksCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYXN0ICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgIEJlZm9yZSA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3B9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAjIEhUTUwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgb3V0cHV0IER5bmFtaWMgZmllbGRzIGJsb2NrcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfQogICAgICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9LT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfQogICAgICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9LT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGVmYXVsdCBtdWx0aSBsYW5ndWFnZSBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBpZiAoICFkZWZpbmVkICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICBteSAlVXNlclByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRVc2VyUHJlZmVyZW5jZXN7VXNlckN1c3RvbWVyRG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKICAgICRHZXRQYXJhbXtSYXRlfSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JhdGUnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHNhdmUsIGlmIGJyb3dzZXIgbGluayBtZXNzYWdlIHdhcyBjbG9zZWQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdCcm93c2VyTGlua01lc3NhZ2UnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJ1VzZXJDdXN0b21lckRvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZScsCiAgICAgICAgICAgIFZhbHVlICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJdGVtSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZSBsaXN0CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoCiAgICAgICAgISRQZXJtaXNzaW9uCiAgICAgICAgfHwgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkVmFsaWRJRExvb2t1cHsgJEZBUURhdGF7VmFsaWRJRH0gfQogICAgICAgIHx8ICEkSW50ZXJmYWNlU3RhdGVzLT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGluIHNlc3Npb24KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkRmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiRmllbGQiICk7CgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggSXRlbUlEIEZpZWxkICkpIHsKICAgICAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWRlZCBQYXJhbTogJE5lZWRlZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIEZpZWxkIGNvbnRlbnQKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUU9iamVjdC0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgJEZpZWxkQ29udGVudAogICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBidWlsZCBiYXNlIFVSTCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpIVE1MJykKICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgJiYgJEZBUURhdGF7Q29udGVudFR5cGV9IG5lICd0ZXh0L2h0bWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtGaWxlSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgRmlsZUlEIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRHZXRQYXJhbXtGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVGaWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CgogICAgIyBBZGRKU0RhdGEgZm9yIEVTCiAgICBteSAkRVNBY3RpdmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdFbGFzdGljc2VhcmNoOjpBY3RpdmUnICk7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdFU0FjdGl2ZScsCiAgICAgICAgVmFsdWUgPT4gJEVTQWN0aXZlLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHZvdGluZyBkZWZhdWx0IG9wdGlvbgogICAgbXkgJFZvdGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICAjIGdldCBGQVEgdm90ZSBpbmZvcm1hdGlvbgogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCRWb3RpbmcpIHsKICAgICAgICAkVm90ZURhdGEgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICBDcmVhdGVCeSAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntTdGF0ZUlEfSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHVzZXIgYWxyZWFkeSB2b3RlZCB0aGlzIEZBUSBpdGVtCiAgICBteSAkQWxyZWFkeVZvdGVkOwogICAgaWYgKCRWb3RlRGF0YSkgewoKICAgICAgICBteSAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7Q2hhbmdlZH0gfHwgJycsCiAgICAgICAgICAgIH0KICAgICAgICApLT5Ub0Vwb2NoKCk7CgogICAgICAgIG15ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkVm90ZURhdGEtPntDcmVhdGVkfSB8fCAnJywKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKCiAgICAgICAgaWYgKCAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lIDw9ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBWb3RlIFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyBjdXN0b21lciBjYW4ndCB1c2UgdGhpcyBzdWItYWN0aW9uIGlmIGlzIG5vdCBlbmFibGVkCiAgICAgICAgaWYgKCAhJFZvdGluZyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGNhbiB2b3RlIG9ubHkgb25jZSBwZXIgRkFRIHJldmlzaW9uCiAgICAgICAgaWYgKCRBbHJlYWR5Vm90ZWQpIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIHZvdGUgaWYgYW55CiAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtSYXRlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHJhdGVzIGNvbmZpZwogICAgICAgICAgICBteSAkVm90aW5nUmF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgICAgICAgICBteSAkUmF0ZSAgICAgICAgPSAkR2V0UGFyYW17UmF0ZX07CgogICAgICAgICAgICAjIHNlbmQgZXJyb3IgaWYgcmF0ZSBpcyBub3QgZGVmaW5lZCBpbiBjb25maWcKICAgICAgICAgICAgaWYgKCAhJFZvdGluZ1JhdGVzLT57JFJhdGV9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkIScpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgYWRkIHRoZSB2b3RlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkQnkgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJUCAgICAgICAgPT4gJEVOVnsnUkVNT1RFX0FERFInfSwKICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e1N0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFJhdGUgICAgICA9PiAkR2V0UGFyYW17UmF0ZX0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkbyBub3Qgc2hvdyB0aGUgdm90aW5nIGZvcm0KICAgICAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVmcmVzaCBGQVEgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgSW5mbyA9PiBUcmFuc2xhdGFibGUoJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ05vIHJhdGUgc2VsZWN0ZWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YSAoU3RpbGwgbmVlZGVkIGZvciBQbGFpblRleHQpCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIGlmICggJEludGVyZmFjZS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CgogICAgICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb219Z3htczsKCiAgICAgICAgICAgICMgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgICAgIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBubyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIEhUTUwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkTGF5b3V0T2JqZWN0LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gfHwgJEZBUURhdGF7Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJ0dyYXknOwogICAgfQoKICAgICMgc2hvdyBiYWNrIGxpbmsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0JhY2snLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBnZXQgbXVsdGktbGFuZ3VhZ2UgZGVmYXVsdCBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyB2b3RlcwogICAgaWYgKCRWb3RpbmcpIHsKCiAgICAgICAgIyBhbHdheXMgZGlzcGxheXMgVm90ZXMgcmVzdWx0IGV2ZW4gaWYgaXRzIDAKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVmlld1ZvdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICBteSAkU2hvd0ZBUVBhdGggPSAkTGF5b3V0T2JqZWN0LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIENhdGVnb3J5SUQgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFBhdGhGb3JJdGVtID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGtleXdvcmRzIGFzIHNlYXJjaCBsaW5rcwogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgcmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sICRGQVFEYXRhe0tleXdvcmRzfTsKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCByYXRpbmcgc3RhcnMKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+RkFRUmF0aW5nU3RhcnNTaG93KAogICAgICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgICAgICAgICBWb3RlcyAgICAgID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGF0dGFjaG1lbnRzIGlmIGFueQogICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyBtZXNzYWdlIGFib3V0IGxpbmtzIGluIGlmcmFtZXMsIGlmIHVzZXIgZGlkbid0IGNsb3NlIGl0IGFscmVhZHkKICAgIGlmICggISRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQnJvd3NlckxpbmtNZXNzYWdlJywKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyNTAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBWb3RpbmcKICAgIGlmICgkVm90aW5nKSB7CgogICAgICAgICMgZ2V0IHZvdGluZyBjb25maWcKICAgICAgICBteSAkU2hvd1ZvdGluZ0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlNob3cnKTsKICAgICAgICBpZiAoICRTaG93Vm90aW5nQ29uZmlnLT57ICRJbnRlcmZhY2UtPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgdXNlciBhbHJlYWR5IHZvdGVkIGFmdGVyIGxhc3QgY2hhbmdlCiAgICAgICAgICAgIGlmICggISRBbHJlYWR5Vm90ZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfRkFRVm90aW5nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZycsCiAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgKTsKCiAgICAjIGdldCBWb3RpbmcgcmF0ZXMgc2V0dGluZwogICAgbXkgJFZvdGluZ1JhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgIGZvciBteSAkUmF0ZVZhbHVlICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskVm90aW5nUmF0ZXN9ICkgewoKICAgICAgICAjIGNyZWF0ZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3V0cHV0CiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIFZhbHVlID0+ICRSYXRlVmFsdWUsCiAgICAgICAgICAgIFRpdGxlID0+ICRWb3RpbmdSYXRlcy0+eyRSYXRlVmFsdWV9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmdSYXRlUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVkaXJlY3QgPSAkRU5We1JFUVVFU1RfVVJJfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGlmICgkUmVkaXJlY3QpIHsKICAgICAgICAkUmVkaXJlY3QgPX4gc3tQdWJsaWNGQVF9e1B1YmxpY0ZBUVpvb219eG1zOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0ID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAuICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdCwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRRXhwbG9yZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgbXkgJFN0YXJ0SGl0ICAgICAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCAgICAgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDIwMDsKICAgIG15ICRTZWFyY2hQYWdlU2hvd24gPSAkQ29uZmlnLT57U2VhcmNoUGFnZVNob3dufSB8fCAzOwogICAgbXkgJFNvcnRCeSAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICMgZ2V0IEl0ZW0gSUQKICAgIG15ICRJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApIHx8IDA7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIGlmIEl0ZW1JRCBwYXJhbWV0ZXIgd2FzIHNlbnQgYW5kIHJlZGlyZWN0IHRvIEZBUSBhcnRpY2xlIHpvb20gc2NyZWVuCiAgICBpZiAoJEl0ZW1JRCkgewoKICAgICAgICAjIHJlZGlyZWN0IHRvIEZBUSB6b29tCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAnQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPScgLiAkSXRlbUlEICk7CiAgICB9CgogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3J5IGJ5IG5hbWUKICAgIG15ICRDYXRlZ29yeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeScgKSB8fCAnJzsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIGNhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmV2ZXJzZSB0aGUgaGFzIGZvciBlYXN5IGxvb2t1cAogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgIG15ICVDYXRlZ29yeURhdGE7CiAgICBpZiAoJENhdGVnb3J5SUQpIHsKCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgICVDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgUlNTIGZlZWQgbGluayBmb3IgbmV3IEZBUSBhcnRpY2xlcyBpbiB0aGUgYnJvd3NlciBVUkwgYmFyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKScpLAogICAgICAgICAgICBIcmVmID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPUNyZWF0ZWQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIFJTUyBmZWVkIGxpbmsgZm9yIGNoYW5nZWQgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICA9PiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnYXBwbGljYXRpb24vcnNzK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKSwKICAgICAgICAgICAgSHJlZiA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJ0FjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT1DaGFuZ2VkJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBSU1MgZmVlZCBsaW5rIGZvciBUb3AtMTAgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9yc3MreG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICdBY3Rpb249UHVibGljRkFRUlNTO1R5cGU9VG9wMTAnLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwoKICAgIG15ICRDYXRlZ29yeUlEc1JlZjsKICAgIG15ICVTZWFyY2g7CiAgICBteSAlRkFRU2VhcmNoOwoKICAgICMgc2hvdyBzZWFyY2ggcmVzdWx0cwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gJiYgJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICkgewogICAgICAgIG15ICRTZWFyY2hOYW1lID0gVHJhbnNsYXRhYmxlKCJTZWFyY2giKS4iOiI7CiAgICAgICAgZm9yIG15ICRNb2RlICggcXcvS2V5d29yZCBXaGF0LyApIHsKICAgICAgICAgICAgbXkgJFN0cmluZyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRNb2RlICk7CiAgICAgICAgICAgIGlmICggJFN0cmluZyApIHsKICAgICAgICAgICAgICAgICRTZWFyY2h7ICRNb2RlIH0gPSAkU3RyaW5nOwogICAgICAgICAgICAgICAgJEZBUVNlYXJjaHsgJE1vZGUgfSA9ICIqJFN0cmluZyoiOwogICAgICAgICAgICAgICAgbXkgJE1vZGVOYW1lID0gJE1vZGUgZXEgJ1doYXQnID8gJ0Z1bGx0ZXh0JyA6ICRNb2RlOwogICAgICAgICAgICAgICAgJFNlYXJjaE5hbWUgLj0gIiAiLlRyYW5zbGF0YWJsZSgkTW9kZU5hbWUpLiIgXCIkU3RyaW5nXCI7IjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdXRwdXQgY2F0ZWdvcnkgcm9vdCAoIGRvbmUgaW4gTGF5b3V0T2JqZWN0IGZvciBub24gc2VhcmNoZXMgKQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpEZWZhdWx0OjpSb290Q2F0ZWdvcnlOYW1lJyksCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAjIG91dHB1dCBzZWFyY2ggaW5mb3JtYXRpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkU2VhcmNoTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGRpc2FibGUgY2F0ZWdvcnkgc3BlY2lmaWMgc3R1ZmYKICAgICAgICAkQ2F0ZWdvcnlJRCA9IC0xOwogICAgfQoKICAgICMgbm8gc2VhcmNoICggc3RhbmRhcmQgbW9kZSApCiAgICBlbHNlIHsgCiAgICAgICAgIyBzaG93IEZBUSBwYXRoCiAgICAgICAgJExheW91dE9iamVjdC0+RkFRUGF0aFNob3coCiAgICAgICAgICAgIEZBUU9iamVjdCAgPT4gJEZBUU9iamVjdCwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgICAgICRDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPlB1YmxpY0NhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZSBsaXN0CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgYXJlIHN1YmNhdGVnb3JpZXMKICAgIGlmICggJENhdGVnb3J5SURzUmVmICYmIHJlZiAkQ2F0ZWdvcnlJRHNSZWYgZXEgJ0FSUkFZJyAmJiBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3ViY2F0ZWdvcmllcycsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBkYXRhIGZvciBlYWNoIHN1YmNhdGVnb3J5CiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtTdWJDYXRlZ29yeUNvdW50fSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5Q291bnQoCiAgICAgICAgICAgICAgICBQYXJlbnRJRHMgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7QXJ0aWNsZUNvdW50fSA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICAgICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLAogICAgICAgICAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslU3ViQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgaW5jbHVkZSBDYXRlZ29yeSBpZiBub3QgaW4gYmFzZSBDYXRlZ29yeSAoMCksIG9yIHNlYXJjaCBtb2RlCiAgICBpZiAoICRDYXRlZ29yeUlEID4gMCApIHsKICAgICAgICAkRkFRU2VhcmNoe0NhdGVnb3J5SURzfSA9IFskQ2F0ZWdvcnlJRF0sCiAgICB9CgogICAgIyBnZXQgdGhlIGxhdGVzdCBhcnRpY2xlcyBmb3IgdGhlIHJvb3QgY2F0ZWdvcnkgKGVsc2UgZW1wdHkpCiAgICBlbHNpZiAoICElU2VhcmNoICkgewogICAgICAgICRTb3J0QnkgPSAnQ2hhbmdlZCc7CiAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgJFNlYXJjaExpbWl0ID0gMTA7CiAgICB9CgogICAgIyBzZWFyY2ggYWxsIEZBUSBhcnRpY2xlcyB3aXRoaW4gdGhlIGdpdmVuIGNhdGVnb3J5CiAgICBteSBAVmlld2FibGVJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyRPcmRlckJ5XSwKICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICVGQVFTZWFyY2gsCiAgICApOwoKICAgICMgc2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgIG15ICRTb3J0Q2xhc3M7CgogICAgIyB0aGlzIHNldHMgdGhlIG9wcG9zaXRlIHRvIHRoZSBPcmRlckJ5IHBhcmFtZXRlcgogICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0QXNjZW5kaW5nJzsKICAgIH0KICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAkU29ydENsYXNzID0gJ1NvcnREZXNjZW5kaW5nJzsKICAgIH0KCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICBteSAlQ1NTU29ydDsKICAgIG15ICRDU1NTb3J0QnkgPSAkU29ydEJ5IC4gJ1NvcnQnOwogICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgIG15ICVOZXdPcmRlciA9ICgKICAgICAgICBEb3duID0+ICdVcCcsCiAgICAgICAgVXAgICA9PiAnRG93bicsCiAgICApOwoKICAgICMgc2hvdyB0aGUgRkFRIGFydGljbGUgbGlzdAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBtdWx0aSBsYW5ndWFnZSBkZWZhdWx0IG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIGlmIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgbXkgJFpvb21CYWNrTGluayA9ICJBY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDsiCiAgICAgICAgICAgIC4gIlNvcnRCeT0kU29ydEJ5O09yZGVyPSRPcmRlckJ5O1N0YXJ0SGl0PSRTdGFydEhpdCI7CgogICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAkWm9vbUJhY2tMaW5rID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCRab29tQmFja0xpbmspOwoKICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQFZpZXdhYmxlSXRlbUlEcykgewoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkU3RhcnRIaXQKICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VhcmNoUGFnZVNob3duICsgJFN0YXJ0SGl0ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRGQVFEYXRhe0NsZWFuVGl0bGV9ID0gJEZBUU9iamVjdC0+RkFRQXJ0aWNsZVRpdGxlQ2xlYW4oCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIFNpemUgID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBibG9ja3MgdG8gdGVtcGxhdGUKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBab29tQmFja0xpbmsgPT4gJFpvb21CYWNrTGluaywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBkYXRhCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9GQVFEYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpIC4gJzsnOwogICAgJExpbmsgLj0gJ09yZGVyPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KSAuICc7JzsKCiAgICBteSAkQWN0aW9uU3RyaW5nOwogICAgaWYgKCAlU2VhcmNoICkgewogICAgICAgICRBY3Rpb25TdHJpbmcgPSAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO1N1YmFjdGlvbj1TZWFyY2g7IjsKCQlpZiAoICRGQVFTZWFyY2h7Q2F0ZWdvcnlJRHN9ICkgewoJCQkkQWN0aW9uU3RyaW5nIC49ICJDYXRlZ29yeUlEPSRDYXRlZ29yeUlEOyI7CgkJfQoJCWZvciBteSAkTW9kZSAoIGtleXMgJVNlYXJjaCApIHsKCQkJJEFjdGlvblN0cmluZyAuPSAiJE1vZGU9JFNlYXJjaHsgJE1vZGUgfTsiOwoJCX0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRBY3Rpb25TdHJpbmcgPSAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQiOwogICAgfQoKICAgICMgYnVpbGQgc2VhcmNoIG5hdmlnYXRpb24gYmFyCiAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkU2VhcmNoUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICBBY3Rpb24gICAgPT4gIkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEIiwKICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgSURQcmVmaXggID0+ICJQdWJsaWNGQVFFeHBsb3JlciIsCiAgICApOwoKICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgaWYgKCBkZWZpbmVkICRQYWdlTmF2e1RvdGFsSGl0c30gJiYgKCAkUGFnZU5hdntUb3RhbEhpdHN9ID4gJFNlYXJjaFBhZ2VTaG93biApICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRTZWFyY2hCYWNrTGluayA9ICJBY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRCI7CgogICAgIyBlbmNvZGUgYmFjayBsaW5rIHRvIEJhc2U2NCBmb3IgZWFzeSBIVE1MIHRyYW5zcG9ydAogICAgJFNlYXJjaEJhY2tMaW5rID0gTUlNRTo6QmFzZTY0OjplbmNvZGVfYmFzZTY0KCRTZWFyY2hCYWNrTGluayk7CgogICAgIyBzaG93IFF1aWNrU2VhcmNoCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFNlYXJjaEJhY2tMaW5rICA9PiAkU2VhcmNoQmFja0xpbmssCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IGxhc3QgYWRkZWQgYW5kIGxhc3QgdXBkYXRlZCBhcnRpY2xlcwogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdG9wIHRlbiBhcnRpY2xlcwogICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dUb3AxMCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbm8gcGVybWlzc2lvbiBlcnJvcgogICAgaWYgKAogICAgICAgICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGFuZCBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkSW50ZXJmYWNlLT57TmFtZX0gZXEgJ3B1YmxpYycgKSB7CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgUERGIG91dHB1dAogICAgbXkgJFRpbWUgPSAkTGF5b3V0T2JqZWN0LT57VGltZX07CiAgICBteSAlUGFnZTsKCiAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgJFBhZ2V7TWF4UGFnZXN9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICBpZiAoICEkUGFnZXtNYXhQYWdlc30gfHwgJFBhZ2V7TWF4UGFnZXN9IDwgMSB8fCAkUGFnZXtNYXhQYWdlc30gPiAxMDAwICkgewogICAgICAgICRQYWdle01heFBhZ2VzfSA9IDEwMDsKICAgIH0KICAgIG15ICRIZWFkZXJSaWdodCAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgIG15ICRIZWFkbGluZUxlZnQgPSAkSGVhZGVyUmlnaHQ7CiAgICBteSAkVGl0bGUgICAgICAgID0gJEhlYWRlclJpZ2h0OwogICAgaWYgKCAkRkFRRGF0YXtUaXRsZX0gKSB7CiAgICAgICAgJEhlYWRsaW5lTGVmdCA9ICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAkVGl0bGUgLj0gJyAvICcgLiAkRkFRRGF0YXtUaXRsZX07CiAgICB9CgogICAgJFBhZ2V7TWFyZ2luVG9wfSAgICA9IDMwOwogICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICA9IDQwOwogICAgJFBhZ2V7TWFyZ2luQm90dG9tfSA9IDQwOwogICAgJFBhZ2V7TWFyZ2luTGVmdH0gICA9IDQwOwogICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICA9ICRIZWFkZXJSaWdodDsKICAgICRQYWdle1BhZ2VUZXh0fSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1BhZ2UnKTsKICAgICRQYWdle1BhZ2VDb3VudH0gICAgPSAxOwoKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICk7CgogICAgIyBjcmVhdGUgZmlyc3QgUERGIHBhZ2UKICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgJVBhZ2UsCiAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICk7CiAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgIEZvbnRTaXplID0+IDEzLAoKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRUaW1lLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE0LAogICAgKTsKCiAgICAjIHR5cGUgb2YgcHJpbnQgdGFnCiAgICBteSAkUHJpbnRUYWcgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlIFByaW50Jyk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFByaW50VGFnLAogICAgICAgIEhlaWdodCAgID0+IDksCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGQnLAogICAgICAgIEFsaWduICAgID0+ICdyaWdodCcsCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0IEZBUSBpbmZvcm1hdGlvbgogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFIZWFkZXJJbmZvKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICAkU2VsZi0+X1BERk91dHB1dEZBUUR5bmFtaWNGaWVsZHMoCiAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICk7CgogICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgUGFnZURhdGEgICAgICAgID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgKTsKCiAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV8nIC4gJEZBUURhdGF7TnVtYmVyfTsKCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgIG15ICREYXRlVGltZSAgICAgICA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CiAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICBteSAkRCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0RheX0gKTsKICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgpzdWIgX1BERk91dHB1dEZBUUhlYWRlckluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDYXRlZ29yeScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0gKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRGQVFEYXRhe1N0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGRlZmF1bHQgbXVsdGkgbGFuZ3VhZ2Ugb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBsYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgbXkgJFJvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYW5ndWFnZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRGQVFEYXRhe0xhbmd1YWdlfSApLAogICAgICAgIH07CiAgICAgICAgcHVzaCBAeyRUYWJsZUxlZnR9LCAkUm93OwogICAgfQoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodDsKCiAgICAjIGdldCBkZWZhdWx0IHZvdGluZyBvcHRpb24KICAgIG15ICRWb3RpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgIyB2b3Rpbmcgcm93cywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRUYWJsZVJpZ2h0ID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUmVzdWx0JykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSAuICIgJSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICAjIGxhc3QgdXBkYXRlIHJvdwogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnS2V5d29yZHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAkT3V0cHV0ID0gMDsKICAgIG15ICVGQVEgICAgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFQcmludCIpLT57RHluYW1pY0ZpZWxkfTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0ZBUSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICREeW5hbWljRmllbGRGaWx0ZXIgfHwge30sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZW5lcmF0ZSB0YWJsZQogICAgRFlOQU1JQ0ZJRUxEQ09ORklHOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIHNraXAgZHluYW1pYyBmaWVsZCBpZiBpcyBub3QgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUnLAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRGQVF7RkFRSUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgJFZhbHVlIGVxICIiOwoKICAgICAgICAjIGdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZAogICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9CiAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkKICAgICAgICAgICAgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICRSb3crKzsKICAgICAgICAkT3V0cHV0ID0gMTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIG91dHB1dCBGQVEgZHluYW1pYyBmaWVsZHMKICAgIGlmICgkT3V0cHV0KSB7CgogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBEeW5hbWljIEZpZWxkcycpLAogICAgICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgICAgICMgb3V0cHV0IHRhYmxlCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXB1dEZBUUNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgTlVNQkVSOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICk7CgogICAgICAgICMgc2tpcCBvdmVyIG5vdCBzaG93biBmaWVsZHMKICAgICAgICBuZXh0IE5VTUJFUiBpZiAhJENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIHN0b3JlIG9ubHkgdGhlIGNvbmZpZyBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc29ydCBzaG93biBmaWVsZHMgYnkgcHJpb3JpdHkKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIHNvcnQgeyAkRmllbGRzeyRhfS0+e1ByaW99IDw9PiAkRmllbGRzeyRifS0+e1ByaW99IH0ga2V5cyAlRmllbGRzICkgewoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZSBkYXRhIG9mIHRoaXMgZmllbGQKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIEFTQ0lJCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICk7CgogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRBc2NpaUZpZWxkIHx8ICcnOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZmllbGQgbmFtZSBhbmQgc3RhdGUKICAgICAgICBteSAkRmllbGROYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkU3RhdGVUeXBlRGF0YS0+e05hbWV9ICkKICAgICAgICAgICAgLiAnKSc7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUlNTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFhNTDo6UlNTOjpTaW1wbGVHZW4gcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgUlNTIHR5cGUKICAgIG15ICRUeXBlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFR5cGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUeXBlIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIHR5cGUKICAgIGlmICggJFR5cGUgIX4gbXsgQ3JlYXRlZCB8IENoYW5nZWQgfCBUb3AxMCB9eG1zICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnKSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBJdGVtSURzOwogICAgbXkgJFRpdGxlOwoKICAgIG15ICRGQVFPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIFRvcC0xMCBGQVEgYXJ0aWNsZXMKICAgIGlmICggJFR5cGUgZXEgJ1RvcDEwJyApIHsKCiAgICAgICAgIyBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgdGhlIGludGVyZmFjZSBuYW1lCiAgICAgICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6TGltaXQnKSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApIHx8IFtdOwoKICAgICAgICBASXRlbUlEcyA9IG1hcCB7ICRfLT57SXRlbUlEfSB9IEB7JFRvcDEwSXRlbUlEc1JlZn07CgogICAgICAgICMgYnVpbGQgdGhlIHRpdGxlCiAgICAgICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKTsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgRkFRIGFydGljbGVzCiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgaW50ZXJmYWNlIHN0YXRlIGxpc3QKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGludGVyZmFjZSBuZWVkcyB0byBiZSBjb21wbGV0ZSBpbnRlcmZhY2UgaGFzaAogICAgICAgIEBJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRUeXBlXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDIwLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIHRoZSB0aXRsZQogICAgICAgIGlmICggJFR5cGUgZXEgJ0NyZWF0ZWQnICkgewogICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFR5cGUgZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgUlNTIG9iamVjdCBvYmplY3QKICAgIG15ICRSU1NPYmplY3QgPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoCiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCJIdHRwVHlwZSIpCiAgICAgICAgICAgIC4gJzovLycKICAgICAgICAgICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoIkZRRE4iKQogICAgKTsKCiAgICAjIGdlbmVyYXRlIHRoZSBSU1MgdGl0bGUKICAgICRUaXRsZSA9ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSAuICcgJyAuICRUaXRsZTsKCiAgICAkUlNTT2JqZWN0LT50aXRsZSgkVGl0bGUpOwoKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICBteSAlSXRlbURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGEgcHJldmlldyBvZiB0aGUgZmlyc3QgdHdvIGZpZWxkcwogICAgICAgIG15ICRQcmV2aWV3ID0gJyc7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgaWYgKCAkSXRlbURhdGF7IkZpZWxkJENvdW50In0gKSB7CiAgICAgICAgICAgICAgICAkUHJldmlldyAuPSAkSXRlbURhdGF7IkZpZWxkJENvdW50In07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY29udmVydCBwcmV2aWV3IHRvIEFTQ0lJCiAgICAgICAgJFByZXZpZXcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkUHJldmlldyApOwoKICAgICAgICAjIHJlZHVjZSBzaXplIG9mIHByZXZpZXcKICAgICAgICAkUHJldmlldyA9fiBzeyBcQSAoIC57ODB9ICkgLiogXHogfXskMVxbXC5cLlxdfWd4bXM7CgogICAgICAgICMgYnVpbGQgdGhlIFJTUyBpdGVtCiAgICAgICAgJFJTU09iamVjdC0+aXRlbSgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAgICAgICAgICAgICAuICI6Ly8iCiAgICAgICAgICAgICAgICAuICRDb25maWdPYmplY3QtPkdldCgiRlFETiIpCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiwKICAgICAgICAgICAgJEl0ZW1EYXRhe1RpdGxlfSwKICAgICAgICAgICAgJFByZXZpZXcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgdG8gc3RyaW5nCiAgICBteSAkT3V0cHV0ID0gJFJTU09iamVjdC0+YXNfc3RyaW5nKCk7CiAgICBpZiAoICEkT3V0cHV0ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlIScpLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gdGhlIFJTUyBmZWVkCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntEeW5hbWljRmllbGRGaWx0ZXJ9ID0gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkRmlsdGVyfSB8fCB7fSwKICAgICk7CgogICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgbXkgQEN1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICBwdXNoIEBDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICB9CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSBcQEN1c3RvbWVyRHluYW1pY0ZpZWxkczsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBmcm9tIGNvbnN0cnVjdG9yCiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgbXkgJFN0YXJ0SGl0ICAgICAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCAgICAgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDIwMDsKICAgIG15ICRTZWFyY2hQYWdlU2hvd24gPSAkQ29uZmlnLT57U2VhcmNoUGFnZVNob3dufSB8fCA0MDsKICAgIG15ICRTb3J0QnkgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBGQVEgbnVtYmVyCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBmdWxsLXRleHQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dC54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1lbWJlciBleGNsdWRlIGF0dHJpYnV0ZXMKICAgIG15IEBFeGNsdWRlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeGNsdWRlJyApOwoKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBUaW1lU2VhcmNoVHlwZSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlCiAgICAgICAgVm90ZVNlYXJjaE9wdGlvbiBSYXRlU2VhcmNoIFJhdGVTZWFyY2hUeXBlIFJhdGVTZWFyY2hPcHRpb24KICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0IEl0ZW1DcmVhdGVUaW1lU3RhcnREYXkgSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcgogICAgICAgICkKICAgICAgICApCiAgICB7CgogICAgICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBub24gZW1wdHkgcGFyYW1ldGVycyBvbiBhIGxvY2FsIHByb2ZpbGUKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSAuPSAiJFBhcmFtTmFtZT0kR2V0UGFyYW17JFBhcmFtTmFtZX07IjsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IGJhY2sgbGluawogICAgJEdldFBhcmFte1NlYXJjaEJhY2tMaW5rfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hCYWNrTGluaycgKSB8fCAnJzsKICAgIGlmICggJEdldFBhcmFte1NlYXJjaEJhY2tMaW5rfSApIHsKICAgICAgICAkR2V0UGFyYW17U2VhcmNoQmFja0xpbmt9ID0gTUlNRTo6QmFzZTY0OjpkZWNvZGVfYmFzZTY0KCAkR2V0UGFyYW17U2VhcmNoQmFja0xpbmt9ICk7CiAgICB9CgogICAgIyBzaG93IGJhY2sgbGluawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEcyBMYW5ndWFnZUlEcyApKSB7CgogICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIG15IEBBcnJheSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9IFxAQXJyYXk7CgogICAgICAgICAgICAjIHN0b3JlIHBhcmFtZXRlcnMgb24gYSBsb2NhbCBwcm9maWxlCiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9IC49ICRQYXJhbU5hbWUgLiAnPScgLiAkRWxlbWVudCAuICc7JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdAogICAgRFlOQU1JQ0ZJRUxEQ09ORklHOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2gKICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICVHZXRQYXJhbSA9ICggJUdldFBhcmFtLCAleyREeW5hbWljRmllbGRWYWx1ZX0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZHMgdG8gcHJvZmlsZSB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIGJhY2stbGluawogICAgICAgICAgICBLRVlJVEVNOgogICAgICAgICAgICBmb3IgbXkgJEtleUl0ZW0gKCBzb3J0IGtleXMgJXskRHluYW1pY0ZpZWxkVmFsdWV9ICkgewoKICAgICAgICAgICAgICAgICMgY29udmVydCBzY2FsYXIgdmFsdWVzIHRvIGFycmF5IHRvIHVzZSBzYW1lIGNvZGUgYmFzZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJER5bmFtaWNGaWVsZFZhbHVlLT57JEtleUl0ZW19CiAgICAgICAgICAgICAgICAgICAgJiYgcmVmICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSBlcSAnJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWUtPnskS2V5SXRlbX0gPSBbICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgS0VZSVRFTSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkVmFsdWUtPnskS2V5SXRlbX0gKTsKCiAgICAgICAgICAgICAgICAjIGNvbmNhdGVuYXRlIGR5bmFtaWMgZmllbGRzIHZhbHVlcyBpbnRvIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBWQUxVRUlURU06CiAgICAgICAgICAgICAgICBmb3IgbXkgJFZhbHVlSXRlbSAoIEB7ICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgVkFMVUVJVEVNIGlmICEkVmFsdWVJdGVtOwogICAgICAgICAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gLj0gIiRLZXlJdGVtPSRWYWx1ZUl0ZW07IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGl0ZW0gbmVlZCB0byBnZXQgZXhjbHVkZWQKICAgIGZvciBteSAkRXhjbHVkZSAoQEV4Y2x1ZGVzKSB7CiAgICAgICAgaWYgKCAkR2V0UGFyYW17JEV4Y2x1ZGV9ICkgewogICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyRFeGNsdWRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdm90ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSBlcSAnVm90ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCByYXRlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259IGVxICdSYXRlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6UmF0ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHRpbWUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBzZXQgcmVzdWx0IGZvcm0gRU5WCiAgICBpZiAoICEkR2V0UGFyYW17UmVzdWx0Rm9ybX0gKSB7CiAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19ID0gJyc7CiAgICB9CiAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICRTZWFyY2hQYWdlU2hvd24gPSAkU2VhcmNoTGltaXQ7CiAgICB9CgogICAgIyBjaGVjayByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcyBzZWFyY2ggcGFyYW1ldGVycyBmb3IgRkFRIHNlYXJjaAogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5OwoKICAgICAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gJUR5bmFtaWNGaWVsZFZhbHVlcyB0byBkaXNjYXJkIHRob3NlIHdoZXJlIHRoZQogICAgICAgICAgICAgICAgIyB2YWx1ZSB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBnZXQKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFNlYXJjaFBhcmFtZXRlciApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgdmFsdWUgdG8gZGlzcGxheQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntEaXNwbGF5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdm90ZXMgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSByYXRlIHNlYXJjaAogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICYmICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1JhdGV9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1JhdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICVUaW1lTWFwID0gKAogICAgICAgICAgICBJdGVtQ3JlYXRlID0+ICdUaW1lJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRpbWVUeXBlICggc29ydCBrZXlzICVUaW1lTWFwICkgewoKICAgICAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUgc2V0dGluZ3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMjM6NTk6NTknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2hvdXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnZGF5JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtb250aCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDMwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAneWVhcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDM2NTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbW9yZSB0aGFuIC4uLiBhZ28KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgIG15IEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICApOwoKICAgICAgICBteSAkTXVsdGlMYW5ndWFnZSAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICAgICAjIENTViBvdXRwdXQKICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKICAgICAgICAgICAgbXkgQFRtcENTVkhlYWQ7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBGQVEgZHluYW1pYyBmaWVsZHMgZm9yIENTViBkaXNwbGF5CiAgICAgICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e1NlYXJjaENTVkR5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHM7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICAgICAgICAgIHB1c2ggQENTVkN1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkQ1NWRHluYW1pY0ZpZWxkID0gXEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHM7CgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQFZpZXdhYmxlSXRlbUlEcykgewoKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmZvIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICBteSAlQ1NWSW5mbyA9ICglRkFRRGF0YSk7CiAgICAgICAgICAgICAgICAkQ1NWSW5mb3tDaGFuZ2VkfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAnQ2hhbmdlZCc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0NoYW5nZWQnOwoKICAgICAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIG9uIENWUyByZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBoZWFkZXIgaXMgYSBkeW5hbWljIGZpZWxkIGFuZCBnZXQgdGhlIHZhbHVlIGZyb20gZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgICAgICMgYmFja2VuZAogICAgICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRdKyApIFx6fXhtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgYWxsIGZpZWxkcyB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggY3VycmVudCBmaWVsZCBuYW1lICgkMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBuZSAkMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgdmFsdWUgYXMgZm9yIHByaW50ICh0byBjb3JyZWN0bHkgZGlzcGxheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkQ1NWSW5mb3skSGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkVmFsdWVTdHJnLT57VmFsdWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGVybWluYXRlIHRoZSBEWU5BTUlDRklFTEQgbG9vcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHJpZXZlIGRhdGEgZnJvbSBGQVEgaXRlbQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3snTnVtYmVyJ307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyIGVxICdDYXRlZ29yeScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3snQ2F0ZWdvcnlOYW1lJ307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwogICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdDaGFuZ2VkJzsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdDaGFuZ2VkJzsKCiAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIG9uIENTViByZXN1bHRzCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgRkFRTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IEZBUUhvb2sgZnJvbSBjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnRkFRTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzZW1ibGUgQ1NWIGRhdGEKICAgICAgICAgICAgbXkgJENTViA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDU1YnKS0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgIERhdGEgICAgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICBTZXBhcmF0b3IgPT4gJFNlbGYtPntVc2VyQ1NWU2VwYXJhdG9yfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmV0dXJuIENTViB0byBkb3dubG9hZC4KICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJERhdGVUaW1lICAgICAgID0gJERhdGVUaW1lT2JqZWN0LT5HZXQoKTsKICAgICAgICAgICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICAgICAgICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICAgICAgICAgIG15ICREICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57RGF5fSApOwogICAgICAgICAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICAgICAgICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0YWJsZSBibG9jawogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IGNoYW5nZSBkYXRlIHRvIGxvbmcgZm9ybWF0CiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgUERGIFJvd3MKICAgICAgICAgICAgICAgIG15IEBQREZSb3c7CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBsYW5ndWFnZSByb3cKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7TGFuZ3VhZ2V9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRGQVFEYXRhe1N0YXRlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRDaGFuZ2VkOwogICAgICAgICAgICAgICAgcHVzaCBAUERGRGF0YSwgXEBQREZSb3c7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQYWdlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAgICAgICAgIG15ICRUaW1lID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDZWxsRGF0YTsKCiAgICAgICAgICAgICMgb3V0cHV0ICdObyBSZXN1bHQnLCBpZiBubyBjb250ZW50IHdhcyBnaXZlbgogICAgICAgICAgICBpZiAoQFBERkRhdGEpIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgaGVhZGVyCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaXRsZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDYXRlZ29yeScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGNvcnJlY3QgaGVhZGVyIGluZGV4CiAgICAgICAgICAgICAgICBteSAkTmV4dEhlYWRlckluZGV4ID0gMzsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKTsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAgICAgJE5leHRIZWFkZXJJbmRleCAgICAgICAgICAgICAgID0gNDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsgJE5leHRIZWFkZXJJbmRleCArIDEgXS0+e0NvbnRlbnR9CiAgICAgICAgICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NoYW5nZWQnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpbWUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTE0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUEFHRToKICAgICAgICAgICAgZm9yIG15ICRQYWdlQ291bnQgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRQYWdlQ291bnQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBSZXR1cm4gdGhlIFBERiBkb2N1bWVudC4KICAgICAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV9zZWFyY2gnOwoKICAgICAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgICAgIG15ICREYXRlVGltZSAgICAgICA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CiAgICAgICAgICAgIG15ICRZICAgICAgICAgICAgICA9ICREYXRlVGltZS0+e1llYXJ9OwogICAgICAgICAgICBteSAkTSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01vbnRofSApOwogICAgICAgICAgICBteSAkRCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0RheX0gKTsKICAgICAgICAgICAgbXkgJGggICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntIb3VyfSApOwogICAgICAgICAgICBteSAkbSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01pbnV0ZX0gKTsKCiAgICAgICAgICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBpZiB0aGVyZSBhcmUgcmVzdWx0cyB0byBzaG93CiAgICAgICAgaWYgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoOyIKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntQcm9maWxlfQogICAgICAgICAgICAgICAgLiAiU29ydEJ5PSRTb3J0Qnk7T3JkZXI9JE9yZGVyQnk7U3RhcnRIaXQ9JFN0YXJ0SGl0IjsKCiAgICAgICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6UHVibGljRkFRT3ZlcnZpZXciKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgZm9yIG92ZXJ2aWV3IGRpc3BsYXkKICAgICAgICAgICAgbXkgJE92ZXJ2aWV3RHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRPdmVydmlld0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkT3ZlcnZpZXdEeW5hbWljRmllbGQgPSBcQE92ZXJ2aWV3Q3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcyB0YWJsZSBoZWFkZXJzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRPdmVydmlld0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICA9ICcnOwogICAgICAgICAgICAgICAgICAgIG15ICRPcmRlciA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0QnkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNvcnRCeSBlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntPcmRlcn0gJiYgKCAkU2VsZi0+e09yZGVyfSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciAgICAgICAgICAgID0+ICRPcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VhcmNoUGFnZVNob3duICsgJFN0YXJ0SGl0ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2xlYW5UaXRsZX0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBibG9ja3MgdG8gdGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpvb21CYWNrTGluayA9PiAkWm9vbUJhY2tMaW5rLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskT3ZlcnZpZXdEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRGQVFEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWb3RlcycsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF0ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdSYXRlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgZWFjaCBhdHRyaWJ1dGUgaW4gc2VhcmNoIHJlc3VsdHMgYXJlYS4KICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJUF0dHJpYnV0ZU1hcCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVmaW5lZCBieSB0aGUgdXNlcgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskQXR0cmlidXRlfSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGUgbmFtZSBhbmQgdHJhbnNsYXRlIGl0IGlmIGFwcGxpZXMKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEF0dHJpYnV0ZU1hcHskQXR0cmlidXRlfS0+e05hbWV9OwogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57VHJhbnNsYXRhYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZVZhbHVlOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlcyBpcyBhbiBhcnJheSB0byBwYXJzZSBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBDYXRlZ29yeSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ0NhdGVnb3J5SURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBsb25nIG5hbWUgZm9yIGFsbCBwdWJsaWMgY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBjYXRlZ29yeSBpZCB0byBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWRvcnlJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlOYW1lcywgJENhdGVnb3J5TGlzdC0+eyRDYXRlZG9yeUlEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgY2F0ZWdvcnkgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBDYXRlZ29yeU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIExhbmd1YWdlSURzCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMYW5ndWFnZUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBsYW5ndWFnZSBpZCB0byBsYW5ndWFnZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBMYW5ndWFnZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICAgICBMQU5HVUFHRUlEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBAeyAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTEFOR1VBR0VJRCBpZiAhJExhbmd1YWdlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQExhbmd1YWdlTmFtZXMsICRMYW5ndWFnZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgc3RyaW5nIHdpdGggYWxsIHNlbGVjdGVkIGxhbmd1YWdlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9IGpvaW4oICIgKyAiLCBATGFuZ3VhZ2VOYW1lcyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSBpcyBhbiBzY2FsYXIgYW5kIGNhbiBiZSBzZXQgZGlyZWN0bHkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnVGltZVNlYXJjaFR5cGUnICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdGFydERhdGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCcsICdEYXRlRm9ybWF0U2hvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3RvcERhdGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wTW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wRGF5fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCcsICdEYXRlRm9ybWF0U2hvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlICAgICAgPSBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgYmV0d2VlbicpOwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkU3RhcnREYXRlIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnYW5kJykgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFN0b3BEYXRlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwaW5nID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xhc3QnICAgPT4gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIHdpdGhpbiB0aGUgbGFzdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JlZm9yZScgPT4gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIG1vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlICAgICAgPSAkTWFwcGluZy0+eyAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB9OwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0gLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9IC4gJyhzKScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdWb3RlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtWb3RlU2VhcmNofTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnUmF0ZVNlYXJjaFR5cGUnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn07CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ICkgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gLiAnJSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoVGVybXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgPT4gJEF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQXR0cmlidXRlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHNlYXJjaCBuYXZpZ2F0aW9uIGJhcgogICAgICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICAgICAgUGFnZVNob3duID0+ICRTZWFyY2hQYWdlU2hvd24sCiAgICAgICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntQcm9maWxlfVNvcnRCeT0kU29ydEJ5O09yZGVyPSRPcmRlckJ5OyIsCiAgICAgICAgICAgIElEUHJlZml4ID0+ICJQdWJsaWNGQVFTZWFyY2giLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWFyY2hQYWdlU2hvd24gKSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IEhUTUwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwoKICAgICAgICAjU2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgICAgICBteSAkU29ydENsYXNzOwoKICAgICAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdGUgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICAgICAgbXkgJUNTU1NvcnQ7CiAgICAgICAgbXkgJENTU1NvcnRCeSA9ICRTb3J0QnkgLiAnU29ydCc7CiAgICAgICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgICAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdVcCcpLAogICAgICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnRG93bicpLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgICA9PiAkTmV3T3JkZXJ7JE9yZGVyQnl9LAogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RGVmYXVsdHN9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlybWF0aW9uQ2hlY2tib3hlcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+TWFza0Zvcm0oCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBBcmVhICAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBzZXQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgbXkgJVJlc3VsdEZvcm0gPSAoCiAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgUHJpbnQgID0+IFRyYW5zbGF0YWJsZSgnUHJpbnQnKSwKICAgICAgICBDU1YgICAgPT4gVHJhbnNsYXRhYmxlKCdDU1YnKQogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGNhdGVnb3JpZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtDYXRlZ29yaWVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NhdGVnb3J5SURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0NhdGVnb3J5SURzfSwKICAgICAgICBUcmVlVmlldyAgID0+ICRUcmVlVmlldywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXF1YWxzJyksCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4nKSwKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbiBlcXVhbHMnKSwKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbicpLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuIGVxdWFscycpLAogICAgKTsKCiAgICAkUGFyYW17Vm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZvdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17UmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAwICAgPT4gJzAlJywKICAgICAgICAgICAgMjUgID0+ICcyNSUnLAogICAgICAgICAgICA1MCAgPT4gJzUwJScsCiAgICAgICAgICAgIDc1ICA9PiAnNzUlJywKICAgICAgICAgICAgMTAwID0+ICcxMDAlJywKICAgICAgICB9LAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaCcsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFzdCAgID0+IFRyYW5zbGF0YWJsZSgnd2l0aGluIHRoZSBsYXN0IC4uLicpLAogICAgICAgICAgICBCZWZvcmUgPT4gVHJhbnNsYXRhYmxlKCdtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgIH0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB8fCAnTGFzdCcsCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiBUcmFuc2xhdGFibGUoJ21pbnV0ZShzKScpLAogICAgICAgICAgICBob3VyICAgPT4gVHJhbnNsYXRhYmxlKCdob3VyKHMpJyksCiAgICAgICAgICAgIGRheSAgICA9PiBUcmFuc2xhdGFibGUoJ2RheShzKScpLAogICAgICAgICAgICB3ZWVrICAgPT4gVHJhbnNsYXRhYmxlKCd3ZWVrKHMpJyksCiAgICAgICAgICAgIG1vbnRoICA9PiBUcmFuc2xhdGFibGUoJ21vbnRoKHMpJyksCiAgICAgICAgICAgIHllYXIgICA9PiBUcmFuc2xhdGFibGUoJ3llYXIocyknKSwKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ3JlYXRlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgIyBIVE1MIHNlYXJjaCBtYXNrIG91dHB1dAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9OwoKICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZAogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0UgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRIVE1MKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbXVsdGktbGFuZ3VhZ2UgZGVmYXVsdCBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgJFNlbGYtPntVc2VySUR9ID0gMTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJdGVtSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBiYWNrIGxpbmsKICAgICRHZXRQYXJhbXtab29tQmFja0xpbmt9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1pvb21CYWNrTGluaycgKSB8fCAnJzsKICAgIGlmICggJEdldFBhcmFte1pvb21CYWNrTGlua30gKSB7CiAgICAgICAgJEdldFBhcmFte1pvb21CYWNrTGlua30gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRHZXRQYXJhbXtab29tQmFja0xpbmt9ICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICgKICAgICAgICAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRWYWxpZElETG9va3VweyAkRkFRRGF0YXtWYWxpZElEfSB9CiAgICAgICAgfHwgISRJbnRlcmZhY2VTdGF0ZXMtPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJGaWVsZCIgKTsKCiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KCBJdGVtSUQgRmllbGQgKSkgewogICAgICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgRmllbGQgY29udGVudAogICAgICAgIG15ICRGaWVsZENvbnRlbnQgPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAkRmllbGRDb250ZW50CiAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpIVE1MJykKICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgJiYgJEZBUURhdGF7Q29udGVudFR5cGV9IG5lICd0ZXh0L2h0bWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBiYXNlIFVSTCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudAogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIG1hbmFnZSBwYXJhbWV0ZXJzCiAgICAgICAgJEdldFBhcmFte0ZpbGVJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBGaWxlSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAlRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkSW50ZXJmYWNlLT57TmFtZX0gZXEgJ3B1YmxpYycgKSB7CgogICAgICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRWm9vbX1neG1zOwoKICAgICAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHZvdGluZyByZXN1bHRzCiAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJExheW91dE9iamVjdC0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgKTsKCiAgICBpZiAoICEkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9IHx8ICRGQVFEYXRhe1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICdHcmF5JzsKICAgIH0KCiAgICAjIHNob3cgYmFjayBsaW5rCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IG11bHRpLWxhbmd1YWdlIG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyBsYW5ndWFnZQogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdm90aW5nIGRlZmF1bHQgb3B0aW9uCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgc2hvdyB2b3RlcwogICAgaWYgKCRWb3RpbmcpIHsKCiAgICAgICAgIyBhbHdheXMgZGlzcGxheXMgVm90ZXMgcmVzdWx0IGV2ZW4gaWYgaXRzIDAKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVmlld1ZvdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICBteSAkU2hvd0ZBUVBhdGggPSAkTGF5b3V0T2JqZWN0LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIENhdGVnb3J5SUQgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFBhdGhGb3JJdGVtID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGtleXdvcmRzIGFzIHNlYXJjaCBsaW5rcwogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgcmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sICRGQVFEYXRhe0tleXdvcmRzfTsKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCByYXRpbmcgc3RhcnMKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+RkFRUmF0aW5nU3RhcnNTaG93KAogICAgICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgICAgICAgICBWb3RlcyAgICAgID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGF0dGFjaG1lbnRzIGlmIGFueQogICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyNTAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVpvb20nLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZyBOYW1lIFVzZXJJRCkpCiAgICB7CiAgICAgICAgZGllICJHb3Qgbm8gJE5lZWRlZCEiIGlmICggISRTZWxmLT57JE5lZWRlZH0gKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybjsKfQoKc3ViIENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoCiAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICApOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntUeXBlfSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FnZW50JywKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gMCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+IDAsCiAgICAgICAgICAgIFNpZGViYXJDbGFzcyA9PiAnTWVkaXVtJywKICAgICAgICB9LAogICAgKTsKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkUGFyYW17Sm91cm5hbH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHRoZSBKb3VybmFsIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSB0aGUgam91cm5hbCBsb2NhbGx5CiAgICBteSBASm91cm5hbEVudHJpZXM7CiAgICBpZiAoICRQYXJhbXtKb3VybmFsfSAmJiByZWYgJFBhcmFte0pvdXJuYWx9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQEpvdXJuYWxFbnRyaWVzID0gQHsgJFBhcmFte0pvdXJuYWx9IH07CiAgICB9CgogICAgbXkgQFNob3dDb2x1bW5zOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzaG93IEpvdXJuYWwgRW50cmllcyBhcyByb3dzCiAgICBpZiAoQEpvdXJuYWxFbnRyaWVzKSB7CgogICAgICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRQYXJhbXtTaG93Q29sdW1uc30gfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgY29sdW1uIGhlYWRlciBibG9ja3MKICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAjIGNhbGwgbWFpbiBibG9jawogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnUmVjb3JkRm9ybScgKTsKCiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIGNhbGwgaGVhZGVyIHNwZWNpZmljIGJsb2NrCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgSk9VUk5BTEVOVFJZOgogICAgICAgIGZvciBteSAkSm91cm5hbEVudHJ5IChASm91cm5hbEVudHJpZXMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBmb3IgY29ycnVwdGlvbiBjaGVjawogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRKb3VybmFsRW50cnktPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEpvdXJuYWxFbnRyeS0+e0NsZWFuU3ViamVjdH0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkUGFyYW17VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBKT1VSTkFMRU5UUlkgaWYgISVGQVE7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rRW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2V0IGFuIE5vIEZBUSBKb3VybmFsIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0ZBUUl0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBGQVFJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBncmFudCBhY2Nlc3MgYnkgZGVmYXVsdAogICAgbXkgJEFjY2VzcyA9IDE7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkQWN0aW9uID0gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259OwogICAgaWYgKCAkQWN0aW9uIGVxICdBZ2VudExpbmtPYmplY3QnICkgewoKICAgICAgICAjIFRoZSBMaW5rLWxpbmsgaXMgYSBzcGVjaWFsIGNhc2UsIGFzIGl0IGlzIG5vdCBzcGVjaWZpYyB0byBGQVEuCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvcmUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50RkFRRWRpdAogICAgICAgICRBY3Rpb24gPSAnQWdlbnRGQVFFZGl0JzsKICAgIH0KCiAgICAjIGdldCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgc3BlY2lmaWVkIGFjdGlvbgogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn07CgogICAgbXkgJEdyb3Vwc1JvID0gJENvbmZpZy0+e0dyb3VwUm99IHx8IFtdOwogICAgbXkgJEdyb3Vwc1J3ID0gJENvbmZpZy0+e0dyb3VwfSAgIHx8IFtdOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgaWYgKCAkQWN0aW9uICYmICggQHskR3JvdXBzUm99IHx8IEB7JEdyb3Vwc1J3fSApICkgewoKICAgICAgICAjIGRlbnkgYWNjZXNzIGJ5IGRlZmF1bHQsIHdoZW4gdGhlcmUgYXJlIGdyb3VwcyB0byBjaGVjawogICAgICAgICRBY2Nlc3MgPSAwOwogICAgICAgIG15ICRIYXNQZXJtaXNzaW9uOwoKICAgICAgICAjIGNoZWNrIHJlYWQgb25seSBncm91cHMKICAgICAgICBST0dST1VQOgogICAgICAgIGZvciBteSAkUm9Hcm91cCAoIEB7JEdyb3Vwc1JvfSApIHsKCiAgICAgICAgICAgICRIYXNQZXJtaXNzaW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJvR3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CiAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAkSGFzUGVybWlzc2lvbiAhPSAxOwoKICAgICAgICAgICAgIyBzZXQgYWNjZXNzCiAgICAgICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgICAgICBsYXN0IFJPR1JPVVA7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlYWQgd3JpdGUgZ3JvdXBzCiAgICAgICAgUldHUk9VUDoKICAgICAgICBmb3IgbXkgJFJ3R3JvdXAgKCBAeyRHcm91cHNSd30gKSB7CgogICAgICAgICAgICAkSGFzUGVybWlzc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSd0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgISRIYXNQZXJtaXNzaW9uOwogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgJEhhc1Blcm1pc3Npb24gIT0gMTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgbWVudSBpdGVtCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZW51SXRlbScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXsgJFBhcmFte0ZBUUl0ZW19IH0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWd9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgJFBhcmFte0NvdW50ZXJ9Kys7CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpEZWxldGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIFByZXZlbnQgdXNlZCBvbmx5IG9uY2Ugd2FybmluZwp1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgR2V0IFVzZXJJRCBwYXJhbS4KICAgICRTZWxmLT57VXNlcklEfSA9ICRQYXJhbXtVc2VySUR9IHx8IGRpZSAiR290IG5vIFVzZXJJRCEiOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgUnVuIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljLgogICAgbXkgJEdlbmVyaWNPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYy0+bmV3KCBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9ICk7CiAgICAkR2VuZXJpY09iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBDcmVhdGUgc3RydWN0dXJlIGZvciBKUy4KICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAlSlNEYXRhOwogICAgJEpTRGF0YXsgJFBhcmFte01lbnVJRH0gfSA9IHsKICAgICAgICBFbGVtZW50SUQgICAgICAgICAgICAgICAgICA9PiAkUGFyYW17TWVudUlEfSwKICAgICAgICBFbGVtZW50U2VsZWN0b3IgICAgICAgICAgICA9PiAnIycgLiAkUGFyYW17TWVudUlEfSwKICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmcgICA9PiAnQWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD0nIC4gJFBhcmFte0ZBUUl0ZW19LT57SXRlbUlEfSwKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyA9PiAnQWN0aW9uPUFnZW50RkFRRGVsZXRlO1N1YmFjdGlvbj1EZWxldGU7SXRlbUlEPScgLiAkUGFyYW17RkFRSXRlbX0tPntJdGVtSUR9LAogICAgICAgIERpYWxvZ1RpdGxlICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRlJyksCiAgICB9OwoKICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdGQVFEYXRhJywKICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICk7CgogICAgJFBhcmFte0NvdW50ZXJ9Kys7CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkUGFyYW17RkFRSURzfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIEZBUUlEcyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgdGhlIEZBUUlEcwogICAgbXkgQElEczsKICAgIGlmICggJFBhcmFte0ZBUUlEc30gJiYgcmVmICRQYXJhbXtGQVFJRHN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQElEcyA9IEB7ICRQYXJhbXtGQVFJRHN9IH07CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciBmcm9udGVuZCBtb2R1bGUKICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3U21hbGwiKS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnRkFRJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICk7CgogICAgbXkgQFNob3dDb2x1bW5zOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgaWYgKEBJRHMpIHsKCiAgICAgICAgIyBjaGVjayBTaG93Q29sdW1ucyBwYXJhbWV0ZXIKICAgICAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIGJ1aWxkIGNvbHVtbiBoZWFkZXIgYmxvY2tzCiAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgIyBjYWxsIG1haW4gYmxvY2sKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1JlY29yZEZvcm0nICk7CgogICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAoICRDb2x1bW4gZXEgJ0xhbmd1YWdlJyAmJiAhJE11bHRpTGFuZ3VhZ2UgKTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZWVkZWQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIElEIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fSA9ICRQYXJhbXtTb3J0Qnl9IGVxICdQcmlvcml0eUlEJwogICAgICAgICAgICAgICAgICAgICAgICA/ICdQcmlvcml0eScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnQ2F0ZWdvcnlJRCcgPyAnQ2F0ZWdvcnknCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ0xhbmd1YWdlSUQnID8gJ0xhbmd1YWdlJwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdTdGF0ZUlEJyAgICA/ICdTdGF0ZScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnRkFRSUQnICAgICAgPyAnTnVtYmVyJwogICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb3JyZWN0IFNldCBDU1MgY2xhc3MgYW5kIG9yZGVyIGJ5IGxpbmsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnT3ZlcnZpZXdIZWFkZXInOwogICAgICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZEhlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZEhlYWRlclNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0hlYWRlclNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdIZWFkZXJOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgdG8gc3RvcmUgYWxsIGRhdGEKICAgICAgICAgICAgICAgIG15ICVEYXRhOwoKICAgICAgICAgICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRGQVF7Q2xlYW5UaXRsZX0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkUGFyYW17VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJUZBUTsKCiAgICAgICAgICAgICAgICAjIGFkZCBGQVEgZGF0YQogICAgICAgICAgICAgICAgJURhdGEgPSAoICVEYXRhLCAlRkFRICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCBjb2x1bW4gcmVjb3JkIGJsb2NrcwogICAgICAgICAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBzaG93IGxhbmd1YWdlIGNvbHVtbiBpZiBGQVEgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBsYW5ndWFnZXMKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgKCAkQ29sdW1uIGVxICdMYW5ndWFnZScgJiYgISRNdWx0aUxhbmd1YWdlICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IGRpc3BsYXkgY29sdW1ucyBhcyBsaW5rcyBpbiB0aGUgY3VzdG9tZXIgZnJvbnRlbmQKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJFBhcmFte0Zyb250ZW5kfSBlcSAnQ3VzdG9tZXInOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IGxpbmtzIGlmIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtTdGFydCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtFbmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpBZ2VudEZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0TmFtZScpIC4gJyAoJyAuICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICdBY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIGZ1bGwtdGV4dAogICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnJXMgKEZBUUZ1bGx0ZXh0KScsICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpDdXN0b21lckZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICclcyAtIEN1c3RvbWVyICglcyknLAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSwKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAuICdBY3Rpb249JwogICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBmdWxsLXRleHQKICAgICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJywKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpQdWJsaWNGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJFNlc3Npb24gPSAnJzsKICAgIGlmICggISRMYXlvdXRPYmplY3QtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICRTZXNzaW9uID0gJzsnIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntTZXNzaW9uSUR9OwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBudW1iZXIKICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAnJXMgLSBQdWJsaWMgKCVzKScsCiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0TmFtZScpLAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIGZ1bGwtdGV4dAogICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJywKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6RkFRIC0gYWxsIEZBUS1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEtcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBHZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKCkKUmV0dXJucyBhIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgRkFRIHJhdGUKCiAgICBteSAkVm90aW5nUmVzdWx0Q29sb3IgPSAkTGF5b3V0T2JqZWN0LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJzIwJywKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RpbmdSZXN1bHRDb2xvciA9ICdyZWQnICAgICAgICAgICMgb3IgJ29yYW5nZScgb3IgJ2dyZWVuJwoKPWN1dAoKc3ViIEdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtSYXRlfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIHJhdGUhJyksCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRDc3NUbXAgICAgICAgICAgICAgPSAnJzsKICAgIG15ICRWb3RpbmdSZXN1bHRDb2xvcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHRDb2xvcnMnKTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQgeyAkYiA8PT4gJGEgfSBrZXlzICV7JFZvdGluZ1Jlc3VsdENvbG9yc30gKSB7CiAgICAgICAgaWYgKCAkUGFyYW17UmF0ZX0gPD0gJEtleSApIHsKICAgICAgICAgICAgJENzc1RtcCA9ICRWb3RpbmdSZXN1bHRDb2xvcnMtPnskS2V5fTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJENzc1RtcDsKfQoKPWhlYWQyIEZBUUxpc3RTaG93KCkKClJldHVybnMgYSBsaXN0IG9mIEZBUSBpdGVtcyBhcyBzb3J0LWFibGUgbGlzdCB3aXRoIHBhZ2luYXRpb24uCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvVGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+RkFRTGlzdFNob3coCiAgICAgICAgRkFRSURzICAgICA9PiAkRkFRSURzUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2YgRkFRSURzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkRkFRSURzUmVmIH0sICAgICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGluIHRoaXMgY2FzZQogICAgICAgIFZpZXcgICAgICAgPT4gJFNlbGYtPntWaWV3fSwgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgJ1NtYWxsJwogICAgICAgIEZpbHRlciAgICAgPT4gJ0FsbCcsCiAgICAgICAgRmlsdGVycyAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgPT4gJ092ZXJ2aWV3OiBGQVEnLAogICAgICAgIFRpdGxlVmFsdWUgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgRnJvbnRlbmQgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChBZ2VudHxDdXN0b21lcnxQdWJsaWMpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIEZBUUxpc3RTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0YWtlIG9iamVjdCByZWYgdG8gbG9jYWwsIHJlbW92ZSBpdCBmcm9tICVQYXJhbSAocHJldmVudCBtZW1vcnkgbGVhaykKICAgIG15ICRFbnYgPSAkUGFyYW17RW52fTsKICAgIGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlckZBUU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJGQVFPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JykgfHwgJyc7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBoYXNoLXJlZgogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiIScsICRWaWV3ICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5hdmlnYXRpb24gYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJGQVFPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2aWdhdGlvbgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBGQVEgYXJ0aWNsZXMgb24gYSBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBEYXRhICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY1ZhbHVlJywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciBjb250ZW50CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgbXkgJExpbmtCYWNrSUQgPSAnRkFRU2VhcmNoJzsKICAgIGlmICggJFBhcmFte05hdn0gJiYgJFBhcmFte05hdn0gZXEgJ05vbmUnICkgewogICAgICAgICRMaW5rQmFja0lEIC49ICdTbWFsbCc7CiAgICB9CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtCYWNrSUQgPT4gJExpbmtCYWNrSUQsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNlbmQgZGF0YSB0byBKUy4KICAgICRTZWxmLT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0ZBUVNlYXJjaFByb2ZpbGUnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICk7CgogICAgIyBnZXQgZmlsdGVycwogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICMgZ2V0IGdpdmVuIGZpbHRlcnMKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgZmlsdGVyIGNvbnRlbnQKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb29wIG92ZXIgZmlsdGVycwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CgogICAgICAgICAgICAjIGluY3JlbWVudCBmaWx0ZXIgY291bnQgYW5kIGJ1aWxkIGZpbHRlciBpdGVtCiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmaWx0ZXIgaXMgc2VsZWN0ZWQKICAgICAgICAgICAgaWYgKCAkRmlsdGVyLT57RmlsdGVyfSBlcSAkUGFyYW17RmlsdGVyfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrLWVuZHMKICAgIGZvciBteSAkQmFja2VuZCAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CgogICAgICAgICMgYnVpbGQgbmF2aWdhdGlvbiBiYXIgdmlldyBtb2RlCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdmlnYXRpb24gaXMgYXZhaWxhYmxlCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgRkFRIGhpc3RvcnkpLAogICAgICAgICMgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgSFRNTCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJFNlbGYtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFZpZXcgPT4gJFZpZXcsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIG15ICRPdXRwdXRSYXcgPSAnJzsKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0TmF2QmFyLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0UmF3ID0gJE91dHB1dE5hdkJhcjsKICAgIH0KCiAgICAjIGxvYWQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JEVudn0gKTsKICAgIHJldHVybiBpZiAhJE9iamVjdDsKCiAgICAjIHJ1biBtb2R1bGUKICAgIG15ICRPdXRwdXQgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEZyb250ZW5kICA9PiAkUGFyYW17RnJvbnRlbmR9IHx8ICdBZ2VudCcsCiAgICAgICAgTmF2ICAgICAgID0+ICRQYXJhbXtOYXZ9IHx8ICcnLAogICAgICAgIFRpdGxlU2l6ZSA9PiAkUGFyYW17RkFRVGl0bGVTaXplfSwKICAgICk7CgogICAgIyBjcmVhdGUgb3V0cHV0CiAgICBpZiAoICEkUGFyYW17T3V0cHV0fSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwogICAgfQoKICAgICMgY3JlYXRlIG92ZXJ2aWV3IG5hdmlnYXRpb24gYmFyCiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgcmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlCiAgICByZXR1cm4gJE91dHB1dFJhdzsKfQoKPWhlYWQyIEZBUUNvbnRlbnRTaG93KCkKCk91dHB1dHMgdGhlIG5lY2Vzc2FyeSBibG9ja3MgdG8gZGlzcGxheSB0aGUgRkFRIGl0ZW0gZmllbGRzIGZvciB0aGUgc3VwcGxpZWQgRkFRIGl0ZW0gSUQuClRoZSBmaWVsZHMgZGlzcGxheWVkIGFyZSBhbHNvIHJlc3RyaWN0ZWQgYnkgdGhlIHBlcm1pc3Npb25zIHJlcHJlc2VudGVkIGJ5IHRoZSBzdXBwbGllZCBpbnRlcmZhY2UKCklmIGV4aXN0IFJldHVybkNvbnRlbnQgcGFyYW1ldGVyIGl0IHJldHVybnMgdGhlIEZBUSBpdGVtcyBmaWVsZHMgb24gYSBIVE1MIGZvcm1hdHRlZCBzdHJpbmcKCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIEZBUURhdGEgICAgICAgICA9PiAleyAkRkFRRGF0YSB9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gJXsgJEZBUURhdGEgfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIFJldHVybkNvbnRlbnQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFDb250ZW50U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgRkFRRGF0YSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICBteSAkRkFRT2JqZWN0ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3siRmllbGQkTnVtYmVyIn0gPSAkQ29uZmlnOwogICAgfQoKICAgIG15ICRGdWxsQ29udGVudDsKCiAgICAjIHNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IHsgJEZpZWxkc3skYX0tPntQcmlvfSA8PT4gJEZpZWxkc3skYn0tPntQcmlvfSB9IGtleXMgJUZpZWxkcyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNob3cgZmllbGRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17SW50ZXJmYWNlU3RhdGVzfS0+eyAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9IH07CgogICAgICAgIG15ICRDYXB0aW9uID0gJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfTsKICAgICAgICBteSAkQ29udGVudCA9ICRQYXJhbXtGQVFEYXRhfS0+eyRGaWVsZH0gfHwgJyc7CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBIVE1MIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRoZSBmaWVsZAogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRQ29udGVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbXtGQVFEYXRhfS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWVsZCAgICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgQ2FwdGlvbiAgID0+ICRDYXB0aW9uLAogICAgICAgICAgICAgICAgU3RhdGVOYW1lID0+ICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICYmICRTZWxmLT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRIVE1MJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RkFRRGF0YX0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY29udmVydCBmaWVsZHMgQVNDSUkgaWYgbmVlZGVkCiAgICAgICAgICAgIGlmICggJFBhcmFte0ZBUURhdGF9LT57Q29udGVudFR5cGV9IG5lICd0ZXh0L3BsYWluJyApIHsKICAgICAgICAgICAgICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkQ29udGVudCwKICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRQbGFpbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb250ZW50LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU2VuZCBjb25maWcgdG8gSlMuCiAgICAgICAgJFNlbGYtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0JyksCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnQWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4JyksCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSB0aGUgZmllbGQgdG8gcmV0dXJuIGFsbCBGQVEgQm9keQogICAgICAgIGlmICggJFBhcmFte1JldHVybkNvbnRlbnR9ICYmICRDb250ZW50ICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGludGVybmFsIHN0YXRlIHR5cGUKICAgICAgICAgICAgbXkgJEludGVybmFsU3RhdGVUeXBlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGN1cnJlbnQgZmllbGQgaXMgaW50ZXJuYWwKICAgICAgICAgICAgbXkgJElzSW50ZXJuYWw7CiAgICAgICAgICAgIGlmICggJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSA9PSAkSW50ZXJuYWxTdGF0ZVR5cGUtPntTdGF0ZUlEfSApIHsKICAgICAgICAgICAgICAgICRJc0ludGVybmFsID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBUaWNrZXQgQ29tcG9zZQogICAgICAgICAgICBteSAkVGlja2V0Q29tcG9zZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpUaWNrZXRDb21wb3NlJyk7CgogICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSByZXR1cm5pbmcgc3RyaW5nCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntJbmNsdWRlSW50ZXJuYWx9IHx8ICEkSXNJbnRlcm5hbCApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIG5hbWUgc2hvdWxkIGJlIHJldHVybmVkCiAgICAgICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0ZpZWxkTmFtZXN9ICkgewogICAgICAgICAgICAgICAgICAgICRGdWxsQ29udGVudCAuPSAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDYXB0aW9uKSAuICcgPGJyLz4gJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGdWxsQ29udGVudCAuPSAkQ29udGVudCAuICcgPGJyLz4gJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHJldHVybiBhbGwgdGhlIChwZXJtaXR0ZWQpIEZBUSBib2R5CiAgICBpZiAoICRQYXJhbXtSZXR1cm5Db250ZW50fSApIHsKICAgICAgICBpZiAoJEZ1bGxDb250ZW50KSB7CiAgICAgICAgICAgIHJldHVybiAkRnVsbENvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaGlzIGFydGljbGUgaXMgZW1wdHkhJyk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBGQVFQYXRoU2hvdygpCgppZiBpdHMgYWxsb3dlZCBieSB0aGUgY29uZmlndXJhdGlvbiwgb3V0cHV0cyB0aGUgbmVjZXNzYXJ5IGJsb2NrcyB0byBkaXNwbGF5IHRoZSBGQVEgaXRlbSBwYXRoLAphbmQgcmV0dXJucyB0aGUgdmFsdWUgMS4KCiAgICBteSAkU2hvd1BhdGhPayA9ICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIENhdGVnb3J5SUQgID0+IDUsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICBQYXRoRm9ySXRlbSA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChkZWZhdWx0IDApCiAgICAgICAgTmF2ICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBGQVFQYXRoU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgJFBhcmFte1BhdGhGb3JJdGVtfSB8fD0gMDsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDYXRlZ29yeUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEJsb2NrID0gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnQnOwogICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlJRH0gZXEgJzAnICkgewogICAgICAgICRCbG9jayA9ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rJzsKICAgIH0KCiAgICAjIG91dHB1dCBjYXRlZ29yeSByb290CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAkQmxvY2ssCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeU5hbWUnKSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAwLAogICAgICAgICAgICBOYXYgICAgICAgID0+ICRQYXJhbXtOYXZ9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IFNob3cgRkFRIFBhdGggc2V0dGluZwogICAgbXkgJFNob3dQYXRoID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93Jyk7CgogICAgIyBkbyBub3QgZGlzcGxheSB0aGUgcGF0aCBpZiBzZXR0aW5nIGlzIG9mZgogICAgcmV0dXJuIGlmICEkU2hvd1BhdGg7CgogICAgbXkgJEZBUU9iamVjdCA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgIG15ICRDYXRlZ29yeUxpc3QgPSAkRkFRT2JqZWN0LT5GQVFQYXRoTGlzdEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBzdWJjYXRlZ29yaWVzCiAgICBmb3IgbXkgJENhdGVnb3J5RGF0YSAoIEB7JENhdGVnb3J5TGlzdH0gKSB7CgogICAgICAgICRCbG9jayA9ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JzsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDYXRlZ29yeURhdGEtPntDYXRlZ29yeUlEfSA9PSAkQ2F0ZWdvcnlMaXN0LT5bLTFdLT57Q2F0ZWdvcnlJRH0KICAgICAgICAgICAgJiYgISRQYXJhbXtQYXRoRm9ySXRlbX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEJsb2NrID0gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsnOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRCbG9jaywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAleyRDYXRlZ29yeURhdGF9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEZBUVJhdGluZ1N0YXJzU2hvdygpCgpPdXRwdXRzIHRoZSBuZWNlc3NhcnkgYmxvY2tzIHRvIHJlcHJlc2VudCB0aGUgRkFRIGl0ZW0gcmF0aW5nCmFzICJTdGFycyIgaW4gdGhlIHNjYWxlIGZyb20gMSB0byA1LgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhLT57Vm90ZVJlc3VsdH0sCiAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YSAtPntWb3Rlc30sCiAgICApOwoKPWN1dAoKc3ViIEZBUVJhdGluZ1N0YXJzU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhWb3RlUmVzdWx0IFZvdGVzKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3RhcnMgYnkgbXVsdGlwbHkgYnkgNSBhbmQgZGl2aWRlIGJ5IDEwMAogICAgIyAxMDAgYmVjYXVzZSBWb3RlIHJlc3VsdCBpcyBhICUKICAgICMgNSBiZWNhdXNlIHdlIGhhdmUgb25seSA1IHN0YXJzCiAgICBteSAkU3RhckNvdW50ZXIgPSBpbnQoICRQYXJhbXtWb3RlUmVzdWx0fSAqIDAuMDUgKTsKICAgIGlmICggJFN0YXJDb3VudGVyIDwgNSApIHsKCiAgICAgICAgIyBhZGQgMSBiZWNhdXNlIGxvd2VzdCB2YWx1ZSBzaG91bGQgYmUgMQogICAgICAgICRTdGFyQ291bnRlcisrOwogICAgfQoKICAgICMgdGhlIG51bWJlciBvZiBzdGFycyBjYW4ndCBiZSBncmF0ZXIgdGhhdCA1CiAgICBlbHNpZiAoICRTdGFyQ291bnRlciA+IDUgKSB7CiAgICAgICAgJFN0YXJDb3VudGVyID0gNTsKICAgIH0KCiAgICAjIG91dHB1dCByYXRpbmcgYmxvY2sKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdWaWV3UmF0aW5nJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZG8gbm90IG91dHB1dCBhbnkgc3RhciBpZiB0aGlzIEZBUSBoYXMgYmVlbiBub3Qgdm90ZWQKICAgIGlmICggJFBhcmFte1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFN0YXJDb3VudGVyID0gMDsKICAgIH0KCiAgICAjIHNob3cgc3RhcnMgb25seSBpZiB0aGUgRkFRIGl0ZW0gaGFzIGJlZW4gdm90ZWQgYXQgbGVhc3Qgb25jZSBldmVuIGlmIHRoZSAkVm90ZVJlc3VsdCBpcyAwCiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgc3RhcnMKICAgICAgICBmb3IgKCAxIC4uICRTdGFyQ291bnRlciApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmF0ZVN0YXJzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgc3RhcnMgdGV4dAogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1JhdGVTdGFyc0NvdW50JywKICAgICAgICBEYXRhID0+IHsgU3RhcnMgPT4gJFN0YXJDb3VudGVyIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRU2hvd0xhdGVzdE5ld3NCb3goKQoKU2hvd3MgYW4gaW5mbyBib3ggd2l0aCB0aGUgbGFzdCB1cGRhdGVkIG9yIGxhc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnTGFzdENyZWF0ZScsICAgICAgICAgICAgICAgIyAoTGFzdENyZWF0ZSB8IExhc3RDaGFuZ2UpCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gNSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dMYXRlc3ROZXdzQm94IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBUeXBlIE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENhdGVnb3J5SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHR5cGUKICAgIGlmICggJFBhcmFte1R5cGV9ICF+IG17IExhc3RDcmVhdGUgfCBMYXN0Q2hhbmdlIH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbW9kZQogICAgaWYgKCAkUGFyYW17TW9kZX0gIX4gbXsgQWdlbnQgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBDdXN0b21lclVzZXIKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDdXN0b21lclVzZXIhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBvcmRlciBieSBzZWFyY2ggcGFyYW1ldGVyIGFuZCBoZWFkZXIgYmFzZWQgb24gdHlwZQogICAgbXkgJE9yZGVyQnk7CiAgICBteSAkSGVhZGVyOwogICAgbXkgJFJTU1RpdGxlOwogICAgaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0xhc3RDcmVhdGUnICkgewogICAgICAgICRPcmRlckJ5ICA9ICdDcmVhdGVkJzsKICAgICAgICAkSGVhZGVyICAgPSBUcmFuc2xhdGFibGUoJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycpOwogICAgICAgICRSU1NUaXRsZSA9IFRyYW5zbGF0YWJsZSgnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q2hhbmdlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ2hhbmdlZCc7CiAgICAgICAgJEhlYWRlciAgID0gVHJhbnNsYXRhYmxlKCdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnKTsKICAgICAgICAkUlNTVGl0bGUgPSBUcmFuc2xhdGFibGUoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKTsKICAgIH0KCiAgICBteSAkUmVzdWx0ID0gLTE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzaG93IGxhc3QgYWRkZWQvdXBkYXRlZCBhcnRpY2xlcwogICAgbXkgJFNob3cgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvdyIpOwogICAgaWYgKCAkU2hvdy0+eyAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IH0gKSB7CgogICAgICAgIG15ICRGQVFPYmplY3QgPSAkUGFyYW17RkFRT2JqZWN0fTsKCiAgICAgICAgIyB0byBzdG9yZSBzZWFyY2ggcGFyYW0gZm9yIGNhdGVnb3JpZXMKICAgICAgICBteSAlQ2F0ZWdvcnlTZWFyY2hQYXJhbTsKCiAgICAgICAgIyBpZiBzdWJjYXRlZ29yaWVzIHNob3VsZCBhbHNvIGJlIHNob3duCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvd1N1YkNhdGVnb3J5SXRlbXMiKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGEgY2F0ZWdvcnkgaXMgZ2l2ZW4gYW5kIHN1YmNhdGVnb3JpZXMgc2hvdWxkIG5vdCBiZSBzaG93bgogICAgICAgIGVsc2lmICggJFBhcmFte0NhdGVnb3J5SUR9ICkgewoKICAgICAgICAgICAgIyBzZWFyY2ggb25seSBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0gXTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIHRoZSBGQVEgYXJ0aWNsZXMKICAgICAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJE9yZGVyQnldLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpFeHBsb3Jlcjo6JFBhcmFte1R5cGV9OjpMaW1pdCIpIHx8IDUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVDYXRlZ29yeVNlYXJjaFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNob3cKICAgICAgICBpZiAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+ICRIZWFkZXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBSU1MgRmVlZCBpY29uCiAgICAgICAgICAgIGlmICggJFBhcmFte01vZGV9IGVxICdQdWJsaWMnICkgewoKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRSU1NUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBhcnRpY2xlIHJvdwogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9Cgo9aGVhZDIgRkFRU2hvd1RvcDEwKCkKClNob3dzIGFuIGluZm8gYm94IHdpdGggdGhlIFRvcCAxMCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiA1LAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd1RvcDEwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBNb2RlIEludGVyZmFjZSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBDYXRlZ29yeUlEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEN1c3RvbWVyIHwgUHVibGljIH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdNb2RlIG11c3QgYmUgZWl0aGVyIEFnZW50LCBDdXN0b21lciBvciBQdWJsaWMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIEN1c3RvbWVyVXNlcgogICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ0N1c3RvbWVyJyAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEN1c3RvbWVyVXNlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZXN1bHQgPSAtMTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZC91cGRhdGVkIGFydGljbGVzCiAgICBteSAkU2hvdyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3cnKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgICAgICMgdG8gc3RvcmUgc2VhcmNoIHBhcmFtIGZvciBjYXRlZ29yaWVzCiAgICAgICAgbXkgJUNhdGVnb3J5U2VhcmNoUGFyYW07CgogICAgICAgICMgaWYgc3ViY2F0ZWdvcmllcyBzaG91bGQgYWxzbyBiZSBzaG93bgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvd1N1YkNhdGVnb3J5SXRlbXMnKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgdG9wIDEwIGFydGljbGVzIGZvciBjYXRlZ29yaWVzIHdpdGggYXQgbGVhc3Qgcm8gcGVybWlzc2lvbnMKICAgICAgICBteSAkVG9wMTBJdGVtSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9LAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6TGltaXQnKSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAlQ2F0ZWdvcnlTZWFyY2hQYXJhbSwKICAgICAgICApIHx8IFtdOwoKICAgICAgICAjIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzaG93CiAgICAgICAgaWYgKCAkVG9wMTBJdGVtSURzUmVmICYmIHJlZiAkVG9wMTBJdGVtSURzUmVmIGVxICdBUlJBWScgJiYgQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+IFRyYW5zbGF0YWJsZSgnVG9wIDEwIEZBUSBhcnRpY2xlcycpLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgUlNTIEZlZWQgaWNvbgogICAgICAgICAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnUHVibGljJyApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0TmV3c1JTUycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgID0+ICdUb3AxMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEFydGljbGVzIChUb3AgMTApJyksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICROdW1iZXI7CiAgICAgICAgICAgIGZvciBteSAkVG9wMTBJdGVtICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgICAgICAgICAjIGluY3JlYXNlIHRoZSBudW1iZXIKICAgICAgICAgICAgICAgICROdW1iZXIrKzsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRUb3AxMEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgdGhlIGFydGljbGUgcm93CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkUGFyYW17TmF2fSwKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBUb3AtMTAgcG9zaXRpb24gbnVtYmVyCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyID0+ICROdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCj1oZWFkMiBGQVFTaG93UXVpY2tTZWFyY2goKQoKU2hvd3MgYW4gaW5mbyBib3ggd2l0aCB0aGUgUXVpY2sgU2VhcmNoLgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBTZWFyY2hCYWNrTGluayAgPT4gJEJhc2U2NEVuY29kZWRVcmwsICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd1F1aWNrU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEFnZW50U21hbGwgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgYWN0aW9uIG1vZHVsZQogICAgbXkgJEFjdGlvbjsKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdBZ2VudFNtYWxsJyApIHsKICAgICAgICAkQWN0aW9uID0gJ0FnZW50RkFRU2VhcmNoU21hbGwnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtNb2RlfSAuICdGQVFTZWFyY2gnOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzaG93IHF1aWNrIHNlYXJjaAogICAgbXkgJFNob3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlF1aWNrU2VhcmNoOjpTaG93Jyk7CiAgICBpZiAoICRTaG93LT57ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gfSB8fCAkUGFyYW17TW9kZX0gZXEgJ0FnZW50U21hbGwnICkgewoKICAgICAgICAjIGNhbGwgUXVpY2tTZWFyY2ggYmxvY2sKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1aWNrU2VhcmNoJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkQWN0aW9uLAogICAgICAgICAgICAgICAgTmF2ICAgICAgICAgICAgPT4gJFBhcmFte05hdn0gfHwgJycsCiAgICAgICAgICAgICAgICBTZWFyY2hCYWNrTGluayA9PiAkUGFyYW17U2VhcmNoQmFja0xpbmt9IHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUSAtIGxpbmsgb2JqZWN0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsaW5rIG9iamVjdCBmdW5jdGlvbnMgb2YgbGluayBvYmplY3QgKEZBUSkKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlckxhbmd1YWdlIFVzZXJJRCkpIHsKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9IHx8IGRpZSAiR290IG5vICROZWVkZWQhIjsKICAgIH0KCiAgICAjIFRPRE86IGNoZWNrIGlmIHRoZSBuZXcgaW5zdGFuY2UgaXMgc3RpbGwgbmVlZGVkIHdpdGggdGhlIE9NIQoKICAgICMgV2UgbmVlZCBvdXIgb3duIExheW91dE9iamVjdCBpbnN0YW5jZSB0byBhdm9pZCBibG9jayBkYXRhIGNvbGxpc2lvbnMgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnRkFRJywKICAgICAgICBSZWFsbmFtZSAgID0+ICdGQVEnLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICBPYmplY3RUeXBlID0+IFsnRkFRJ10sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlQ29tcGxleCgpCgpyZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgYmxvY2sgZGF0YQoKICAgIG15IEBCbG9ja0RhdGEgPSAkTGlua09iamVjdC0+VGFibGVDcmVhdGVDb21wbGV4KAogICAgICAgIE9iamVjdExpbmtMaXN0V2l0aERhdGEgPT4gJE9iamVjdExpbmtMaXN0UmVmLAogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgJUJsb2NrRGF0YSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIE9iamVjdE5hbWUgID0+ICdGQVFJRCcsCiAgICAgICAgICAgIE9iamVjdElEICAgID0+ICcxNDc4NScsCgogICAgICAgICAgICBPYmplY3QgICAgPT4gJ0ZBUScsCiAgICAgICAgICAgIEJsb2NrbmFtZSA9PiAnRkFRJywKICAgICAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGQVEjJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTIzMTIzMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgQ3NzICAgICA9PiAnc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoIicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIHRpdGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzQzNDIzNCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIHRpdGxlIG9mIEZBUSAyJywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDEtMDEgMTI6MTI6MDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlQ29tcGxleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgbGlzdC4KICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgJExpbmtMaXN0eyRJdGVtSUR9LT57RGF0YX0gPSAkRGlyZWN0aW9uTGlzdC0+eyRJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRDb21wbGV4VGFibGVEYXRhID0gJENvbmZpZ09iamVjdC0+R2V0KCJMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUiKTsKICAgIG15ICREZWZhdWx0Q29sdW1uczsKICAgIGlmICgKICAgICAgICAkQ29tcGxleFRhYmxlRGF0YQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb21wbGV4VGFibGVEYXRhKQogICAgICAgICYmICRDb21wbGV4VGFibGVEYXRhLT57RkFRfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ29tcGxleFRhYmxlRGF0YS0+e0ZBUX0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRGVmYXVsdENvbHVtbnMgPSAkQ29tcGxleFRhYmxlRGF0YS0+eyJGQVEifS0+eyJEZWZhdWx0Q29sdW1ucyJ9OwogICAgfQoKICAgIG15IEBUaW1lTG9uZ1R5cGVzID0gKAogICAgICAgICJDcmVhdGVkIiwKICAgICAgICAiQ2hhbmdlZCIsCiAgICApOwoKICAgICMgRGVmaW5lIHRoZSBibG9jayBkYXRhLgogICAgbXkgJEZBUUhvb2sgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwoKICAgIG15IEBIZWFkbGluZSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUUhvb2ssCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgTG9hZCB1c2VyIHByZWZlcmVuY2VzLgogICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISREZWZhdWx0Q29sdW1ucyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJERlZmF1bHRDb2x1bW5zKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01pc3NpbmcgY29uZmlndXJhdGlvbiBmb3IgTGlua09iamVjdDo6Q29tcGxleFRhYmxlIyMjRkFRIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBHZXQgZGVmYXVsdCBjb2x1bW4gcHJpb3JpdHkgZnJvbSBTeXNDb25maWcuCiAgICAjIEVhY2ggY29sdW1uIGluIHRhYmxlIChUaXRsZSwgU3RhdGUsLi4uKSBoYXMgZGVmaW5lZCBQcmlvcml0eSBpbiBTeXNDb25maWcuIFN5c3RlbSB1c2UgdGhpcwogICAgIyAgIHByaW9yaXR5IHRvIHNvcnQgY29sdW1ucywgaWYgdXNlciBkb2Vzbid0IGhhdmUgb3duIHNldHRpbmdzLgogICAgbXkgJVNvcnRPcmRlcjsKICAgIGlmICgKICAgICAgICAkQ29tcGxleFRhYmxlRGF0YS0+eyJGQVEifS0+eyJQcmlvcml0eSJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRDb21wbGV4VGFibGVEYXRhLT57IkZBUSJ9LT57IlByaW9yaXR5In0gKQogICAgICAgICkKICAgIHsKICAgICAgICAlU29ydE9yZGVyID0gJXsgJENvbXBsZXhUYWJsZURhdGEtPnsiRkFRIn0tPnsiUHJpb3JpdHkifSB9OwogICAgfQoKICAgIG15ICVVc2VyQ29sdW1ucyA9ICV7JERlZmF1bHRDb2x1bW5zfTsKCiAgICBpZiAoICRQcmVmZXJlbmNlc3snTGlua09iamVjdDo6Q29tcGxleFRhYmxlLUZBUSd9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeydMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUtRkFRJ30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29sdW1uc0VuYWJsZWQKICAgICAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKQogICAgICAgICAgICAmJiAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0KICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAjIENsZWFyIHNvcnQgb3JkZXIuCiAgICAgICAgICAgICVTb3J0T3JkZXIgPSAoKTsKCiAgICAgICAgICAgIERFRkFVTFRDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoIHNvcnQga2V5cyAlVXNlckNvbHVtbnMgKSB7CiAgICAgICAgICAgICAgICBteSAkSW5kZXggPSAwOwoKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlclNldHRpbmcgKCBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q29sdW1uIGVxICRVc2VyU2V0dGluZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFVzZXJDb2x1bW5zeyREZWZhdWx0Q29sdW1ufSA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0T3JkZXJ7JERlZmF1bHRDb2x1bW59ICAgPSAkSW5kZXg7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERFRkFVTFRDT0xVTU47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTm90IGZvdW5kLCBtZWFucyB1c2VyIGNob3NlIHRvIGhpZGUgdGhpcyBpdGVtLgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckNvbHVtbnN7JERlZmF1bHRDb2x1bW59ID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgJFVzZXJDb2x1bW5zeyREZWZhdWx0Q29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhJFNvcnRPcmRlcnskRGVmYXVsdENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNvcnRPcmRlcnskRGVmYXVsdENvbHVtbn0gPSAwOyAgICAjIFNldCAwLCBpdCBzeXN0ZW0gd2lsbCBoaWRlIHRoaXMgaXRlbSBhbnl3YXlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBVc2VyIGhhcyBubyBvd24gc2V0dGluZ3MuCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJVVzZXJDb2x1bW5zICkgewogICAgICAgICAgICBpZiAoICEkU29ydE9yZGVyeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgJFNvcnRPcmRlcnskQ29sdW1ufSA9IDA7ICAgICAgICAgICAgICAgIyBTZXQgMCwgaXQgc3lzdGVtIHdpbGwgaGlkZSB0aGlzIGl0ZW0gYW55d2F5cwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgRGVmaW5lIEhlYWRsaW5lIGNvbHVtbnMuCiAgICBteSBAQWxsQ29sdW1uczsKICAgIENPTFVNTjoKICAgIGZvciBteSAkQ29sdW1uICggc29ydCB7ICRTb3J0T3JkZXJ7JGF9IDw9PiAkU29ydE9yZGVyeyRifSB9IGtleXMgJVVzZXJDb2x1bW5zICkgewoKICAgICAgICBteSAkQ29sdW1uVHJhbnNsYXRlID0gJENvbHVtbjsKICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0NhdGVnb3J5TmFtZScgKSB7CiAgICAgICAgICAgICRDb2x1bW5UcmFuc2xhdGUgPSBUcmFuc2xhdGFibGUoJ0NhdGVnb3J5Jyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ29udGVudFR5cGUnICkgewogICAgICAgICAgICAkQ29sdW1uVHJhbnNsYXRlID0gVHJhbnNsYXRhYmxlKCdDb250ZW50IFR5cGUnKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQEFsbENvbHVtbnMsIHsKICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIENvbHVtblRyYW5zbGF0ZSA9PiAkQ29sdW1uVHJhbnNsYXRlLAogICAgICAgIH07CgogICAgICAgICMgQWx3YXlzIHByZXNlbnQsIGFscmVhZHkgYWRkZWQuCiAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiBlcSAnRkFRTnVtYmVyJzsKCiAgICAgICAgIyBpZiBlbmFibGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgaWYgKCAkVXNlckNvbHVtbnN7JENvbHVtbn0gPT0gMiApIHsKICAgICAgICAgICAgbXkgJENvbHVtbk5hbWUgPSAnJzsKCiAgICAgICAgICAgICMgT3RoZXIgRkFRIGZpZWxkcy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uTmFtZSA9ICRDb2x1bW5UcmFuc2xhdGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gc3tEeW5hbWljRmllbGRffXt9ZzsKCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICRDb2x1bW5OYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBIZWFkbGluZSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29sdW1uTmFtZSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBDcmVhdGUgdGhlIGl0ZW0gbGlzdCAodGFibGUgY29udGVudCkuCiAgICBteSBASXRlbUxpc3Q7CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICVMaW5rTGlzdCApIHsKCiAgICAgICAgIyBFeHRyYWN0IEZBUSBkYXRhLgogICAgICAgIG15ICRGQVEgPSAkTGlua0xpc3R7JEl0ZW1JRH0tPntEYXRhfTsKCiAgICAgICAgIyBGQVEgTnVtYmVyIG11c3QgYmUgcHJlc2VudCAoc2luY2UgaXQgY29udGFpbnMgbWFzdGVyIGxpbmsgdG8gdGhlIEZBUSkuCiAgICAgICAgbXkgQEl0ZW1Db2x1bW5zID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBMaW5rICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfSAuICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEl0ZW1JRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IHsgJFNvcnRPcmRlcnskYX0gPD0+ICRTb3J0T3JkZXJ7JGJ9IH0ga2V5cyAlVXNlckNvbHVtbnMgKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICRDb2x1bW4gZXEgJ0ZBUU51bWJlcic7ICAgICMgQWx3YXlzIHByZXNlbnQsIGFscmVhZHkgYWRkZWQuCgogICAgICAgICAgICAjIGlmIGVuYWJsZWQgYnkgZGVmYXVsdAogICAgICAgICAgICBpZiAoICRVc2VyQ29sdW1uc3skQ29sdW1ufSA9PSAyICkgewoKICAgICAgICAgICAgICAgIG15ICVIYXNoOwogICAgICAgICAgICAgICAgaWYgKCBncmVwIHsgJF8gZXEgJENvbHVtbiB9IEBUaW1lTG9uZ1R5cGVzICkgewogICAgICAgICAgICAgICAgICAgICRIYXNoeydUeXBlJ30gPSAnVGltZUxvbmcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhhc2h7J1R5cGUnfSA9ICdUZXh0JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ1RpdGxlJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGFzaHtNYXhMZW5ndGh9ID0gNTA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBGQVEgZmllbGRzLgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdBcHByb3ZlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRGQVEtPnskQ29sdW1ufSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAgICAgICAgICAgICAgICAgJEhhc2h7J0NvbnRlbnQnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkSGFzaHsnQ29udGVudCd9ID0gJEZBUS0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzLgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBze0R5bmFtaWNGaWVsZF99e31nOwoKICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgIyBHZXQgZmllbGQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkSGFzaHsnQ29udGVudCd9ID0gJFZhbHVlU3RyZy0+e1RpdGxlfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgXCVIYXNoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgIH0KCiAgICByZXR1cm4gaWYgIUBJdGVtTGlzdDsKCiAgICAjIERlZmluZSB0aGUgYmxvY2sgZGF0YS4KICAgIG15ICVCbG9jayA9ICgKICAgICAgICBPYmplY3QgICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgIEJsb2NrbmFtZSAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSwKICAgICAgICBPYmplY3ROYW1lID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3ROYW1lfSwKICAgICAgICBPYmplY3RJRCAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgSGVhZGxpbmUgICA9PiBcQEhlYWRsaW5lLAogICAgICAgIEl0ZW1MaXN0ICAgPT4gXEBJdGVtTGlzdCwKICAgICAgICBBbGxDb2x1bW5zID0+IFxAQWxsQ29sdW1ucywKICAgICk7CgogICAgcmV0dXJuICggXCVCbG9jayApOwp9Cgo9aGVhZDIgVGFibGVDcmVhdGVTaW1wbGUoKQoKcmV0dXJuIGEgaGFzaCB3aXRoIHRoZSBsaW5rIG91dHB1dCBkYXRhCgogICAgbXkgJUxpbmtPdXRwdXREYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlU2ltcGxlKAogICAgICAgIE9iamVjdExpbmtMaXN0V2l0aERhdGEgPT4gJE9iamVjdExpbmtMaXN0UmVmLAogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlIFJldHVybgoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICgKICAgICAgICBOb3JtYWw6OlNvdXJjZSA9PiB7CiAgICAgICAgICAgIFRpY2tldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjo1NTU1NScsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnRkFRIzU1NTU1NTogVGhlIEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0ZBUSMyMjIyMjogVGl0bGUgb2YgRkFRIDIyMjIyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBQYXJlbnRDaGlsZDo6VGFyZ2V0ID0+IHsKICAgICAgICAgICAgVGlja2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOjc3Nzc3JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdGQVEjNzc3Nzc6IEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlU2ltcGxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEZBUUhvb2sgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAkRkFRID0gJERpcmVjdGlvbkxpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6JyAuICRGQVEtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gIiRGQVFIb29rJEZBUS0+e051bWJlcn06ICRGQVEtPntUaXRsZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkSXRlbUlELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0ZBUX0gPSBcQEl0ZW1MaXN0OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJUxpbmtPdXRwdXREYXRhOwp9Cgo9aGVhZDIgQ29udGVudFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm4gYSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMaW5rT2JqZWN0LT5Db250ZW50U3RyaW5nQ3JlYXRlKAogICAgICAgIENvbnRlbnREYXRhID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBDb250ZW50U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0NvbnRlbnREYXRhfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29udGVudERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFRPRE86IENoZWNrIHdoeSBubyByZXR1cm4gaXMgbmVlZGVkIQogICAgcmV0dXJuOwp9Cgo9aGVhZDIgU2VsZWN0YWJsZU9iamVjdExpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBzZWxlY3QtYWJsZSBvYmplY3RzCgogICAgbXkgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKYSByZXN1bHQgY291bGQgYmUKCiAgICBAU2VsZWN0YWJsZU9iamVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRkFRJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VsZWN0YWJsZU9iamVjdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZWN0ZWQ7CiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgJFBhcmFte1NlbGVjdGVkfSBlcSAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSApIHsKICAgICAgICAkU2VsZWN0ZWQgPSAxOwogICAgfQoKICAgICMgb2JqZWN0IHNlbGVjdCBsaXN0CiAgICBteSBAT2JqZWN0U2VsZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBWYWx1ZSAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57UmVhbG5hbWV9LAogICAgICAgICAgICBTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBPYmplY3RTZWxlY3RMaXN0Owp9Cgo9aGVhZDIgU2VhcmNoT3B0aW9uTGlzdCgpCgpyZXR1cm4gYW4gYXJyYXkgaGFzaCB3aXRoIHNlYXJjaCBvcHRpb25zCgogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAkTGlua09iamVjdC0+U2VhcmNoT3B0aW9uTGlzdCgKICAgICAgICBTdWJPYmplY3QgPT4gJ0JsYScsICAjIChvcHRpb25hbCkKICAgICk7CgphIHJlc3VsdCBjb3VsZCBiZQoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ZBUSMnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnMTIzNCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJ0JsYUJsYScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoT3B0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2VhcmNoIG9wdGlvbiBsaXN0CiAgICBteSAkRkFRSG9vayAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICBteSBAU2VhcmNoT3B0aW9uTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgPT4gJEZBUUhvb2ssCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdUaXRsZScsCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ1doYXQnLAogICAgICAgICAgICBOYW1lID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvcm0ga2V5CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKICAgICAgICAkUm93LT57Rm9ybUtleX0gPSAnU0VBUkNIOjonIC4gJFJvdy0+e0tleX07CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRSb3ctPntGb3JtS2V5fSApOwoKICAgICAgICAjIHBhcnNlIHRoZSBpbnB1dCB0ZXh0IGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5wdXRUZXh0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUm93LT57Rm9ybURhdGF9IHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAkUm93LT57SW5wdXRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0xpbmtPYmplY3QnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIEBTZWFyY2hPcHRpb25MaXN0Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UT0JPIHByb2plY3QgKEw8aHR0cHM6Ly9vdG9iby5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17RGF0YX0gbmUgJ1NDQUxBUic7CiAgICByZXR1cm4gaWYgISR7ICRQYXJhbXtEYXRhfSB9OwogICAgcmV0dXJuIGlmICEkUGFyYW17VGVtcGxhdGVGaWxlfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50RkFRRXhwbG9yZXJ9OwoKICAgIG15ICRHcm91cHNSbyA9ICRDb25maWctPntHcm91cFJvfSB8fCBbXTsKCiAgICBteSAkSGFzUGVybWlzc2lvbiA9IDE7CgogICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkR3JvdXBzUm8pICkgewoKICAgICAgICAkSGFzUGVybWlzc2lvbiA9IDA7CgogICAgICAgICMgY2hlY2sgcmVhZCBvbmx5IGdyb3VwcwogICAgICAgIFJPR1JPVVA6CiAgICAgICAgZm9yIG15ICRSb0dyb3VwICggQHskR3JvdXBzUm99ICkgewoKICAgICAgICAgICAgJEhhc1Blcm1pc3Npb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRMYXlvdXRPYmplY3QtPntFbnZSZWZ9LT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkUm9Hcm91cCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICEkSGFzUGVybWlzc2lvbjsKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICRIYXNQZXJtaXNzaW9uICE9IDE7CgogICAgICAgICAgICBsYXN0IFJPR1JPVVA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgIyBnZXQgYWxsb3dlZCB0ZW1wbGF0ZSBuYW1lcwogICAgbXkgJFZhbGlkVGVtcGxhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCcpLT57RkFRfS0+e1RlbXBsYXRlc307CgogICAgIyBjaGVjayB0ZW1wbGF0ZSBuYW1lCiAgICByZXR1cm4gaWYgISRWYWxpZFRlbXBsYXRlcy0+eyAkUGFyYW17VGVtcGxhdGVGaWxlfSB9OwoKICAgICMgaWYgbm8gc2Vzc2lvbiBjb29raWVzIGFyZSB1c2VkIHdlIGF0dGFjaCB0aGUgc2Vzc2lvbiBhcyBVUkwgcGFyYW1ldGVyCiAgICBteSAkU2Vzc2lvblN0cmluZyA9ICcnOwogICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdTZXNzaW9uVXNlQ29va2llJykgKSB7CiAgICAgICAgbXkgJFNlc3Npb25JRCA9ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgIHx8ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRDb25maWdPYmplY3QtPkdldCgnU2Vzc2lvbk5hbWUnKSApCiAgICAgICAgICAgIHx8ICcnOwogICAgICAgICRTZXNzaW9uU3RyaW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdTZXNzaW9uTmFtZScpIC4gJz0nIC4gJFNlc3Npb25JRCAuICc7JzsKICAgIH0KCiAgICBteSAkU3RhcnRQYXR0ZXJuICAgID0gJzwhLS0gWyBdIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCBbIF0gLS0+IC4rPyc7CiAgICBteSAkRkFRVHJhbnNsYXRhYmxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEnKTsKCiAgICAjIGFkZCBGQVEgbGluayB0byBhbiBleGlzdGluZyBPcHRpb25zIGJsb2NrCiAgICAjJEZpbmlzaFBhdHRlcm4gd2lsbCBiZSByZXBsYWNlZCBieSAkUmVwbGFjZQogICAgaWYgKCAkeyAkUGFyYW17RGF0YX0gfSA9fiBteyAkU3RhcnRQYXR0ZXJuIH1peG1zICkgewoKICAgICAgICBteSAkRmluaXNoUGF0dGVybiA9ICc8L2Rpdj4nOwogICAgICAgIG15ICRSZXBsYWNlICAgICAgID0gPDwiRU5EIjsKICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KRU5ECiAgICAgICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gc3sgKCRTdGFydFBhdHRlcm4pICRGaW5pc2hQYXR0ZXJuIH17JDEkUmVwbGFjZX1peG1zOwoKICAgICAgICAjIGluamVjdCB0aGUgbmVjZXNzYXJ5IEpTIGludG8gdGhlIHRlbXBsYXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoIENvZGUgPT4gPDwiRU9GIik7Ci8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5Jbml0RkFRVGlja2V0Q29tcG9zZShcJCgnI1JpY2hUZXh0JykpOwpcJCgnI09wdGlvbkZBUScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRSUZyYW1lID0gJzxpZnJhbWUgY2xhc3M9XCJUZXh0T3B0aW9uIEZBUVwiIHNyYz1cIicgKyBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpICsgJz8nICsgJyRTZXNzaW9uU3RyaW5nJyArICdBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtOYXY9Tm9uZTtTdWJqZWN0PTtXaGF0PVwiPjwvaWZyYW1lPic7CiAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhGQVFJRnJhbWUsICcnLCAnMTBweCcsICdDZW50ZXInLCB0cnVlKTsKICAgIHJldHVybiBmYWxzZTsKfSk7CkVPRgoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCBGQVEgbGluayBhbmQgaXRzIG93biBibG9jaywgaWYgdGhlcmUgbm8gVGlja2V0T3B0aW9ucyBibG9jayB3YXMgY2FsbGVkCiAgICAkU3RhcnRQYXR0ZXJuID0gJzwhLS0gWyBdIE91dHB1dEZpbHRlckhvb2tfTm9UaWNrZXRPcHRpb25zRmFsbGJhY2sgWyBdIC0tPiAuKz8nOwogICAgbXkgJE9wdGlvbnNUcmFuc2xhdGFibGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ09wdGlvbnMnKTsKICAgIG15ICRSZXBsYWNlICAgICAgICAgICAgID0gPDwiRU5EIjsKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kT3B0aW9uc1RyYW5zbGF0YWJsZTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQ2xlYXJcIj48L2Rpdj4KRU5ECiAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgfXskUmVwbGFjZX1peG1zOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKCBDb2RlID0+IDw8IkVPRiIpOwovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkFnZW50LlRpY2tldENvbXBvc2UuSW5pdEZBUVRpY2tldENvbXBvc2UoXCQoJyNSaWNoVGV4dCcpKTsKXCQoJyNPcHRpb25GQVEnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEZBUUlGcmFtZSA9ICc8aWZyYW1lIGNsYXNzPSJUZXh0T3B0aW9uIEZBUSIgc3JjPSInICsgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSArICc/JyArICckU2Vzc2lvblN0cmluZycgKyAnQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7TmF2PU5vbmU7U3ViamVjdD07V2hhdD0iPjwvaWZyYW1lPic7CiAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhGQVFJRnJhbWUsICcnLCAnMTBweCcsICdDZW50ZXInLCB0cnVlKTsKICAgIHJldHVybiBmYWxzZTsKfSk7CkVPRgoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRQ3VzdG9tZXJSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRUZW1wbGF0ZU5hbWUgPSAkUGFyYW17VGVtcGxhdGVGaWxlfSB8fCAnJzsKCiAgICByZXR1cm4gMSBpZiAhJFRlbXBsYXRlTmFtZTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICByZXR1cm4gMSBpZiAhJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpSZWxhdGVkQXJ0aWNsZXM6OkVuYWJsZWQnKTsKCiAgICBteSAkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckVsZW1lbnRQb3N0Jyk7CgogICAgcmV0dXJuIGlmICEkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3M7CiAgICByZXR1cm4gaWYgcmVmICRPdXRwdXRGaWx0ZXJQb3N0Q29uZmlncyBuZSAnSEFTSCc7CgogICAgIyBFeHRyYWN0IHRoZSBvdXRwdXQgZmlsdGVyIGNvbmZpZy4KICAgIG15ICRPdXRwdXRGaWx0ZXJDb25maWcgPSAkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3MtPntPdXRwdXRGaWx0ZXJQb3N0RkFRQ3VzdG9tZXJSZWxhdGVkQXJ0aWNsZXN9OwoKICAgIHJldHVybiBpZiAhJE91dHB1dEZpbHRlckNvbmZpZzsKICAgIHJldHVybiBpZiByZWYgJE91dHB1dEZpbHRlckNvbmZpZyBuZSAnSEFTSCc7CgogICAgbXkgJFZhbGlkVGVtcGxhdGVzID0gJE91dHB1dEZpbHRlckNvbmZpZy0+e1RlbXBsYXRlc307CgogICAgcmV0dXJuIGlmICEkVmFsaWRUZW1wbGF0ZXM7CiAgICByZXR1cm4gaWYgcmVmICRWYWxpZFRlbXBsYXRlcyBuZSAnSEFTSCc7CgogICAgIyBBcHBseSBvbmx5IGlmIHRlbXBsYXRlIGlzIHZhbGlkIGluIGNvbmZpZy4KICAgIHJldHVybiAxIGlmICEkVmFsaWRUZW1wbGF0ZXMtPnskVGVtcGxhdGVOYW1lfTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFTZWFyY2hQYXJhbWV0ZXI7CgogICAgIyBTZXQgaW50ZXJmYWNlIHNldHRpbmcgdG8gJ2V4dGVybmFsJywgdG8gc2VhcmNoIG9ubHkgZm9yIGFwcHJvdmVkIGZhcSBhcnRpY2xlLgogICAgJEZBUVNlYXJjaFBhcmFtZXRlcntJbnRlcmZhY2V9ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAkRkFRU2VhcmNoUGFyYW1ldGVye1N0YXRlc30gPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBUZXN0IGlmIGN1c3RvbWVyL3B1YmxpYyBGQVEgYXJ0aWNsZSBleGlzdHMsIGJlY2F1c2Ugd2UgZG9uJ3Qgc2hvdyB0aGUgd2lkZ2V0CiAgICAjICAgaWYgbm8gcmVsZXZhbnQgYXJ0aWNsZSBleGlzdHMuCiAgICBteSBARkFRQXJ0aWNsZUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAlRkFRU2VhcmNoUGFyYW1ldGVyLAogICAgICAgIExpbWl0ICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhQEZBUUFydGljbGVJRHM7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFJlbmRlciB0aGUgZW1wdHkgcmVsYXRlZCBGQVEgYXJ0aWNsZSBsaXN0IGFuZCBhZGQgdGhlIGluaXRpYWwgd2RpZ2V0IGh0bWwgY29kZSB0byB0aGUgcGFnZS4KICAgIG15ICRDdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgKTsKCiAgICBteSAkU2VhcmNoID0gJyg8ZGl2IGlkPSJSaWNoVGV4dFNlcnZlckVycm9yIltePl0qPi4qPzxcL2Rpdj4pKFxzKjxkaXYgY2xhc3M9IkNsZWFyIj48XC9kaXY+XHMqPFwvZGl2PiknOwogICAgJHsgJFBhcmFte0RhdGF9IH0KICAgICAgICA9fiBzeyRTZWFyY2h9eyQxPGRpdiBpZD0iRkFRUmVsYXRlZEFydGljbGVzIiBjbGFzcz0iSGlkZGVuIj4kQ3VzdG9tZXJSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nPC9kaXY+JDJ9bXNnOwoKICAgIG15ICRGcm9udGVuZEN1c3RvbWVyVGlja2V0TWVzc2FnZUNvbmZpZyAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UiKTsKICAgIG15ICRGcm9udGVuZEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyIpOwoKICAgIG15ICRRdWV1ZXNFbmFibGVkICAgICA9ICRGcm9udGVuZEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzQ29uZmlnLT57J1F1ZXVlc0VuYWJsZWQnfSB8fCAnJzsKICAgIG15ICRRdWV1ZXNFbmFibGVkU3RyZyA9ICcnOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFF1ZXVlc0VuYWJsZWQpICkgewoKICAgICAgICAjIERvbid0IHNob3cgdGhlIGZ1bmN0aW9uYWxpdHksIGlmIHRoZSBxdWV1ZSBzZWxlY3Rpb24gaXMgZGlzYWJsZWQKICAgICAgICAjICAgYW5kIHRoZSBkZWZhdWx0IHF1ZXVlIGlzIG5vdCBpbiB0aGUgZW5hYmxlZCBxdWV1ZXMuCiAgICAgICAgaWYgKCAhJEZyb250ZW5kQ3VzdG9tZXJUaWNrZXRNZXNzYWdlQ29uZmlnLT57UXVldWV9ICkgewogICAgICAgICAgICBteSAlTG9va3VwUXVxdWVzRW5hYmxlZCA9IG1hcCB7ICRfID0+IDEgfSBAeyRRdWV1ZXNFbmFibGVkfTsKCiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgaWYgISRGcm9udGVuZEN1c3RvbWVyVGlja2V0TWVzc2FnZUNvbmZpZy0+e1F1ZXVlRGVmYXVsdH0KICAgICAgICAgICAgICAgIHx8ICEkTG9va3VwUXVxdWVzRW5hYmxlZHsgJEZyb250ZW5kQ3VzdG9tZXJUaWNrZXRNZXNzYWdlQ29uZmlnLT57UXVldWVEZWZhdWx0fSB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFF1ZXVlc0VuYWJsZWRTdHJnID0gam9pbiggIicsJyIsIEB7JFF1ZXVlc0VuYWJsZWR9ICk7CiAgICAgICAgICAgICRRdWV1ZXNFbmFibGVkU3RyZyA9ICInJFF1ZXVlc0VuYWJsZWRTdHJnJyI7CiAgICAgICAgfQogICAgfQoKICAgICMgVE9ETyB0aGUgSlMgc2hvdWxkIGJlIG1vdmVkIGluIGEgb3duIEpTIGZpbGUgd2l0aCBPVE9CTyAxMCEKICAgICMgaW5qZWN0IHRoZSBuZWNlc3NhcnkgSlMgaW50byB0aGUgdGVtcGxhdGUKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKCBDb2RlID0+IDw8IkVPRiIpOwp2YXIgUXVldWVzRW5hYmxlZCA9IFsgJFF1ZXVlc0VuYWJsZWRTdHJnIF0sCkxhc3REYXRhOwoKQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5VSS5SaWNoVGV4dEVkaXRvci5JbnN0YW5jZVJlYWR5JywgZnVuY3Rpb24oKSB7ClwkKCcjRGVzdCcpLm9uKCdjaGFuZ2UuUmVsYXRlZEZBUUFydGljbGUnLCBmdW5jdGlvbiAoKSB7CiAgICB2YXIgU2VsZWN0ZWRRdWV1ZSA9IFwkKHRoaXMpLnZhbCgpLAogICAgICAgIFNlbGVjdGVkUXVldWVOYW1lID0gU2VsZWN0ZWRRdWV1ZS5yZXBsYWNlKC9cXGQqXFx8XFx8LT8vLCAnJyk7CgogICAgLy8gWFhYIGhhbmRsZSBjbGFzcyBoaWRkZW4gZXh0cmEKICAgIC8vIGlmICggXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5oYXNDbGFzcygnSGlkZGVuJykgJiYgKCFRdWV1ZXNFbmFibGVkLmxlbmd0aCB8fCAhU2VsZWN0ZWRRdWV1ZU5hbWUgfHwgXCQuaW5BcnJheShTZWxlY3RlZFF1ZXVlTmFtZSwgUXVldWVzRW5hYmxlZCkgPiAtMSkgKSB7CiAgICBpZiAoICghUXVldWVzRW5hYmxlZC5sZW5ndGggfHwgIVNlbGVjdGVkUXVldWVOYW1lIHx8IFwkLmluQXJyYXkoU2VsZWN0ZWRRdWV1ZU5hbWUsIFF1ZXVlc0VuYWJsZWQpID4gLTEpICkgewoKICAgICAgICBpZiAoIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaGFzQ2xhc3MoJ0hpZGRlbicpICkgeyAvLyBYWFggaGFuZGxlIGNsYXNzCiAgICAgICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFwkKCcjU3ViamVjdCcpLnZhbCgpIHx8IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkpIHsKICAgICAgICAgICAgXCQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSBpZiAoICFTZWxlY3RlZFF1ZXVlTmFtZSB8fCAoIFF1ZXVlc0VuYWJsZWQubGVuZ3RoICYmIFwkLmluQXJyYXkoU2VsZWN0ZWRRdWV1ZU5hbWUsIFF1ZXVlc0VuYWJsZWQpID09IC0xICkgKSB7CiAgICAgICAgXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5hZGRDbGFzcygnSGlkZGVuJyk7CiAgICB9Cn0pOwoKLy8gRkFRIFNlcnZpY2UKXCQoJyNTZXJ2aWNlSUQnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKfSk7Ci8vIGVvIEZBUSBTZXJ2aWNlCgpcJCgnI1N1YmplY3QnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICB2YXIgU2VsZWN0ZWRRdWV1ZSA9IFwkKCcjRGVzdCcpLnZhbCgpLAogICAgICAgIFNlbGVjdGVkUXVldWVOYW1lLAogICAgICAgIERhdGE7CgogICAgaWYgKFNlbGVjdGVkUXVldWUpIHsKICAgICAgICBTZWxlY3RlZFF1ZXVlLnJlcGxhY2UoL1xcZCpcXHxcXHwtPy8sICcnKQogICAgfQoKICAgIGlmICggIVF1ZXVlc0VuYWJsZWQubGVuZ3RoIHx8ICFTZWxlY3RlZFF1ZXVlTmFtZSB8fCBcJC5pbkFycmF5KFNlbGVjdGVkUXVldWVOYW1lLCBRdWV1ZXNFbmFibGVkKSA+IC0xICkgewoKICAgICAgICBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgICAgIFN1YmplY3Q6IFwkKCcjU3ViamVjdCcpLnZhbCgpLAogICAgICAgICAgICBTZXJ2aWNlSUQ6IFwkKCcjU2VydmljZUlEJykudmFsKCksIC8vIEZBUSBTZXJ2aWNlCiAgICAgICAgICAgIEJvZHk6IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCksCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCAhTGFzdERhdGEgfHwgTGFzdERhdGEuU3ViamVjdCAhPSBEYXRhLlN1YmplY3QgfHwgTGFzdERhdGEuQm9keSAhPSBEYXRhLkJvZHkgfHwgTGFzdERhdGEuU2VydmljZUlEICE9IERhdGEuU2VydmljZUlEICkgewoKICAgICAgICAgICAgaWYgKCFcJCgnLkZBUU1pbmlMaXN0JykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuQ29udGVudCcpLmh0bWwoJzxkaXYgY2xhc3M9IkNlbnRlciI+PHNwYW4gY2xhc3M9IkFKQVhMb2FkZXIiIHRpdGxlPSInICsgQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykgKyAnIj48L3NwYW4+PC9kaXY+Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoIVwkKCcjRkFRUmVsYXRlZEFydGljbGVzIC5IZWFkZXIgLkFKQVhMb2FkZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzIC5IZWFkZXIgaDMnKS5hZnRlcignPHNwYW4gY2xhc3M9IkFKQVhMb2FkZXIiIHN0eWxlPSJmbG9hdDogcmlnaHQ7IG1hcmdpbjogMDsiIHRpdGxlPSInICsgQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykgKyAnIj48L3NwYW4+Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChcJCgnI1N1YmplY3QnKS5kYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKSkgewoKICAgICAgICAgICAgICAgIFwkKCcjU3ViamVjdCcpLmRhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpLmFib3J0KCk7CiAgICAgICAgICAgICAgICBcJCgnI1N1YmplY3QnKS5yZW1vdmVEYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgXCQoJyNTdWJqZWN0JykuZGF0YSgnUmVsYXRlZEZBUUFydGljbGVzWEhSJywgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksIERhdGEsIGZ1bmN0aW9uIChSZXNwb25zZSkgewoKICAgICAgICAgICAgICAgIFwkKCcjU3ViamVjdCcpLnJlbW92ZURhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpOwoKICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBsYXN0IGRhdGEgdG8gZXhlY3V0ZSB0aGUgYWpheCByZXF1ZXN0IG9ubHkgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgTGFzdERhdGEgPSBEYXRhOwoKICAgICAgICAgICAgICAgIGlmICggXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5sZW5ndGggKSB7CgogICAgICAgICAgICAgICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaHRtbChSZXNwb25zZS5DdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOyAvLyBYWFggaGFuZGxlIGNsYXNzCiAgICAgICAgICAgICAgICAgICAgXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXM6bm90KC5IaWRkZW4pJykuc2hvdygpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMgLkNvbnRlbnQgPiAuRkFRTWluaUxpc3QnKS5sZW5ndGggPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAvLyBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmhpZGUoKTsgLy8gWFhYOiBtYXliZSB0aGUgYnVnCiAgICAgICAgICAgICAgICAgICAgLy8gWFhYOiBpcyBoaWRkZW4gbmVjZXNzYXJ5IGF0IGFsbD8KICAgICAgICAgICAgICAgICAgICAvLyBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpOwogICAgICAgIH0KICAgIH0KfSk7CgpcJCgnI1N1YmplY3QnKS5vbigncGFzdGUga2V5ZG93bicsIGZ1bmN0aW9uIChFdmVudCkgewogICAgdmFyIFZhbHVlID0gXCQoJyNTdWJqZWN0JykudmFsKCk7CgogICAgLy8gdHJpZ2dlciBvbmx5IHRoZSBjaGFuZ2UgZXZlbnQgZm9yIHRoZSBzdWJqZWN0LCBpZiBzcGFjZSBvciBlbnRlciB3YXMgcHJlc3NlZAogICAgaWYgKCggRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmICggRXZlbnQud2hpY2ggPT0gMzIgfHwgRXZlbnQud2hpY2ggPT0gMTMgKSAmJiAoIFZhbHVlLmxlbmd0aCA+IDEwIHx8IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkpKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKICAgICAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgIH0KfSk7CgovLyBUaGUgImNoYW5nZSIgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgYSBjaGFuZ2UgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgpDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oICdrZXknLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QsIGlmIHNwYWNlIG9yIGVudGVyIHdhcyBwcmVzc2VkCiAgICBpZiAoIEV2ZW50LmRhdGEua2V5Q29kZSA9PSAzMiB8fCBFdmVudC5kYXRhLmtleUNvZGUgPT0gMTMpIHsKICAgICAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgIH0KfSk7CgovLyBUaGUgInBhc3RlIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIHBhc3RlIGlzIG1hZGUgaW4gdGhlIGVkaXRvci4KQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLm9uKCAncGFzdGUnLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QKICAgIFwkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwp9KTsKCi8vIFRoZSAiYmx1ciIgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgYSBibHVyIGlzIG1hZGUgaW4gdGhlIGVkaXRvci4KQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLm9uKCAnYmx1cicsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdAogICAgXCQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7Cn0pOwoKLy8gVHJpZ2dlciB0aGUgJ1JlbGF0ZWRGQVFBcnRpY2xlJyBjaGFuZ2UgZXZlbnQgdG8gaGlkZS9zaG93IHRoZSByZWxhdGQgZmFxIGFydGljbGUgd2lkZ2V0IGZvciB0aGUgY2FzZQovLyAgdGhhdCB0aGUgcXVldWUgaXMgYWxyZWFkeSBzZWxlY3RlZCBhdCB0aGUgcGFnZSBsb2FkIG9yIHNob3cgdGhlIHdpZGdldCBhbHdheXMgaWYgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpcyBkaXNhYmxlZC4KaWYgKCAhXCQoJyNEZXN0JykubGVuZ3RoICkgewogICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgIGlmIChcJCgnI1N1YmplY3QnKS52YWwoKSB8fCBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpKSB7CiAgICAgICAgXCQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICB9Cn0KZWxzZSB7CiAgICBcJCgnI0Rlc3QnKS50cmlnZ2VyKCdjaGFuZ2UuUmVsYXRlZEZBUUFydGljbGUnKTsKfQoKfSk7CgpFT0YKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQWRkIEZBUSBBcnRpY2xlIikgfCBodG1sICVdPC9oMT4KICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQWRkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KCiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qIDwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJLZXl3b3JkcyIgaWQ9IktleXdvcmRzIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkcyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkNhdGVnb3J5SUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPiogPC9zcGFuPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ2F0ZWdvcnlJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ2F0ZWdvcnlJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNlcnZpY2VJRCI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRbJSBJRiAhRGF0YS5LZXkgJV0gTm9NYXJnaW5bJSBFTkQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlcnZpY2VPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEIj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9MYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0iLz4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vTGFuZ3VhZ2UiKSAlXQoKClslIFJlbmRlckJsb2NrU3RhcnQoIkFwcHJvdmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZCI+WyUgVHJhbnNsYXRlKCJBcHByb3ZhbCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BcHByb3ZhbE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFwcHJvdmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZCIpICVdCgojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVsZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiMgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93IFJvd19EeW5hbWljRmllbGRfWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgojICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQojICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgojICAgICAgICAgICAgICAgIDwvZGl2PgojWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93IFJvd19EeW5hbWljRmllbGRfWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgojICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQojICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgojICAgICAgICAgICAgICAgIDwvZGl2PgojWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgpbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvQXR0YWNobWVudExpc3QudHQiICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXTo8YnIvPjxzcGFuIGNsYXNzPSJGQVFTdGF0ZU5hbWUiPihbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZU5hbWUpIHwgaHRtbCAlXSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgY2xhc3M9IlJpY2hUZXh0IiBuYW1lPSJbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IjcwIj5bJSBEYXRhLkNvbnRlbnQgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IkZBUVN1Ym1pdCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIkNyZWF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUFkZCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQo8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJBc0Jsb2NrIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0gKFslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgaHRtbCAlXSkiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg1MCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3J5U2hvcnROYW1lIHwgaHRtbCAlXSAtIFslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgIDwvdGJvZHk+CjwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5BY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEZBUSBDYXRlZ29yeSIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBGQVEgQ2F0ZWdvcnkiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5OYW1lICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCBUeXBlID0gIkFnZW50IiAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25MaXN0IikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QWRkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJBZGQgY2F0ZWdvcnkiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uQWRkIikgJV0KCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkxpc3QiKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFslIElGIERhdGEuVmFsaWQgIT0gJ3ZhbGlkJyVdY2xhc3M9IkludmFsaWQiWyUgRU5EICVdID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUNoYW5nZTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIgTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUNhdGVnb3J5SURbJSBEYXRhLkNhdGVnb3J5SUQgfCBodG1sICVdIiBjbGFzcz0iVHJhc2hDYW4iIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV06IFslIERhdGEuTmFtZSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1VwZGF0ZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFkZCIpICVdCiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZGQgQ2F0ZWdvcnkiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWRkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IENhdGVnb3J5IikgfCBodG1sICVdPC9oMj4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckVkaXQiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCB1cmkgJV1BY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBhcmVudElEIj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3J5IG9mIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlBlcm1pc3Npb25Hcm91cHMiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiUGVybWlzc2lvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkdyb3VwT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQZXJtaXNzaW9uR3JvdXBzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4iKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ29tbWVudCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb21tZW50IiBpZD0iQ29tbWVudCIgdmFsdWU9IlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkNvbW1lbnRTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iODAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLiIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9BZmZlY3RlZCIpICVdCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8iKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BZmZlY3RlZCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZCIpICVdCjxwPgogICAgWyUgVHJhbnNsYXRlKCJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnkiKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRJdGVtcyIpICVdCjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSIpIHwgaHRtbCAlXToKPC9wPgo8dWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkSXRlbXNSb3ciKSAlXQogICAgPGxpIGNsYXNzPSJJbmRlbnQgU3BhY2luZ0JvdHRvbVNtYWxsIj4KICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgJV07QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICBbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdOlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+IFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg2MCkgfCBodG1sICVdCiAgICAgICAgPC9hPgogICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFmZmVjdGVkSXRlbXNSb3ciKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZFN1YkNhdGVnb3JpZXMiKSAlXQo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzIikgfCBodG1sICVdOgo8L3A+Cjx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IikgJV0KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rICVdO0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgWyUgRGF0YS5Mb25nTmFtZSB8IGh0bWwgJV0KICAgICAgICA8L2E+CiAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IikgJV0KPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIkFmZmVjdGVkU3ViQ2F0ZWdvcmllcyIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVsZXRlIikgJV0K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyIpIHwgaHRtbCAlXQo8L3A+Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhcnROb3JtYWwiKSAlXQogICAgPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gRm9ybVNjcmVlbiBOb1NpZGViYXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZSgiRkFRIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0Tm9ybWFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJGQVEiKSB8IGh0bWwgJV06IFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydFNtYWxsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUVkaXQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2NyZWVuVHlwZSIgdmFsdWU9IlslIERhdGEuU2NyZWVuVHlwZSB8IGh0bWwgJV0iLz4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgWyUgRGF0YS5GaWVsZHNldENsYXNzIHwgaHRtbCAlXSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkcyI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IlslIERhdGEuS2V5d29yZHMgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDYXRlZ29yeUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qIDwvc3Bhbj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSUQiPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRbJSBJRiAhRGF0YS5LZXkgJV0gTm9NYXJnaW5bJSBFTkQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYW5ndWFnZUlEIj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiB2YWx1ZT0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9MYW5ndWFnZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBcHByb3ZhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFwcHJvdmVkIj5bJSBUcmFuc2xhdGUoIkFwcHJvdmFsIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQXBwcm92YWxPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFwcHJvdmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgICAgICAgICAgICAgICAgPC9kaXY+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0F0dGFjaG1lbnRMaXN0LnR0IiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuRmllbGQgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV06PGJyLz48c3BhbiBjbGFzcz0iRkFRU3RhdGVOYW1lIj4oWyUgVHJhbnNsYXRlKERhdGEuU3RhdGVOYW1lKSB8IGh0bWwgJV0pPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgY2xhc3M9IlJpY2hUZXh0IiBuYW1lPSJbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IjcwIj5bJSBEYXRhLkNvbnRlbnQgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiVXBkYXRlIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2siPjwvaT4gWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kTm9ybWFsIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUVkaXQiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IkZBUVN1Ym1pdCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGQVEiPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkZBUSBFeHBsb3JlciIpIHwgaHRtbCAlXTwvaDE+CgogICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KICAgICAgICA8bGk+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KCiAgICA8L3VsPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gWyUgRGF0YS5TaWRlYmFyQ2xhc3MgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1aWNrU2VhcmNoIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ubGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlF1aWNrIFNlYXJjaCIpIHwgaHRtbCAlXTxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGlkPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuQWN0aW9uIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJBZHZhbmNlZCBTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVpY2tTZWFyY2giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXS4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV07TmF2PVslIERhdGEuTmF2IHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0gKFslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgaHRtbCAlXSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlTaG9ydE5hbWUgfCB0cnVuY2F0ZSgxNSkgfCBodG1sICVdIC0gWyUgRGF0YS5MYW5ndWFnZSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIC0gWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3ViY2F0ZWdvcmllcyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU3ViY2F0ZWdvcmllcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBzdWJjYXRlZ29yaWVzIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayBNYXN0ZXJBY3Rpb25MaW5rIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5TdWJDYXRlZ29yeUNvdW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkFydGljbGVDb3VudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJjYXRlZ29yaWVzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUl0ZW1MaXN0IikgJV0KWyUgRGF0YS5GQVFJdGVtTGlzdEhUTUwgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUl0ZW1MaXN0IikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhpc3Rvcnkgb2YiKSB8IGh0bWwgJV0gWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDYwKSB8IGh0bWwgJV0KICAgICAgICA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCI+WyUgVHJhbnNsYXRlKCJDbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBDb250ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgc3VtbWFyeT0iRkFRIGhpc3RvcnkgZGF0YSB0YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVXNlciIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVkQnkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9GQVFGb3VuZCIpICVdCiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb0ZBUUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRm9ybSIpICVdCiAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyIgc3VtbWFyeT0iQSBnZW5lcmljIEZBUSB0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2F0ZWdvcnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDYXRlZ29yeUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5hbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJBY3Rpb24gT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiQWN0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5hbWVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGltZSBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJUaW1lIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF9bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV1fWyUgRGF0YS5Db3VudGVyIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICA8dGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IHVyaSAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpdGxlIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlN1YmplY3QgfCBodG1sICVdIj5bJSBEYXRhLkNsZWFuU3ViamVjdCB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaXRsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENhdGVnb3J5IikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2F0ZWdvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROYW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5BY3Rpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQWN0aW9uKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkVGltZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0iPlslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGltZSIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgIDwvdGJvZHk+CiAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRm9ybSIpICVdCjwvZGl2Pgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5BY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEZBUSBMYW5ndWFnZSIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBGQVEgTGFuZ3VhZ2UiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5OYW1lICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCBUeXBlID0gIkFnZW50IiAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRGlzYWJsZWQiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJOb3RpY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCBBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c3RlbUNvbmZpZ3VyYXRpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWaWV3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2V0dGluZyIgdmFsdWU9IkZBUTo6TXVsdGlMYW5ndWFnZSAiLz4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsU2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRW5hYmxlIGl0IGhlcmUhIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdW5sb2NrLWFsdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkVuYWJsZSBpdCBoZXJlISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBsYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD1bJSBEYXRhLkxhbmd1YWdlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQWZmZWN0ZWRJdGVtcyIpICVdCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8iKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BZmZlY3RlZEl0ZW1zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkSXRlbXMiKSAlXQo8cD4KICAgIFslIFRyYW5zbGF0ZSgiWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISIpIHwgaHRtbCAlXQo8L3A+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSIpIHwgaHRtbCAlXToKPC9wPgoKPHVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rICVdO0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTpbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08c3Bhbj4mbmJzcDsmbWRhc2g7PC9zcGFuPiBbJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvYT4KICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KPC91bD4KClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRlbGV0ZSIpICVdCg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5BY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEZBUSBMYW5ndWFnZSIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBGQVEgTGFuZ3VhZ2UiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5OYW1lICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCBUeXBlID0gIkFnZW50IiAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRGlzYWJsZWQiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJOb3RpY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCBBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c3RlbUNvbmZpZ3VyYXRpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWaWV3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2V0dGluZyIgdmFsdWU9IkZBUTo6TXVsdGlMYW5ndWFnZSAiLz4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsU2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRW5hYmxlIGl0IGhlcmUhIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdW5sb2NrLWFsdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkVuYWJsZSBpdCBoZXJlISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBsYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD1bJSBEYXRhLkxhbmd1YWdlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQWZmZWN0ZWRJdGVtcyIpICVdCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8iKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BZmZlY3RlZEl0ZW1zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkSXRlbXMiKSAlXQo8cD4KICAgIFslIFRyYW5zbGF0ZSgiWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISIpIHwgaHRtbCAlXQo8L3A+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSIpIHwgaHRtbCAlXToKPC9wPgoKPHVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rICVdO0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTpbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08c3Bhbj4mbmJzcDsmbWRhc2g7PC9zcGFuPiBbJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvYT4KICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KPC91bD4KClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRlbGV0ZSIpICVdCg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KClslIERhdGEuRGF0YUluVGhlTWlkZGxlICVdCgogICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdDb250cm9sIiBpZD0iT3ZlcnZpZXdDb250cm9sIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuTGlua0JhY2tJRCB8IHVyaSAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rQmFjayB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDb250ZXh0RnVuY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb250ZXh0IFNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiQ29udGV4dCBTZXR0aW5ncyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lciIgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFByZWZlcmVuY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXAgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlZGlyZWN0VVJMIiB2YWx1ZT0iWyUgRGF0YS5SZXF1ZXN0ZWRVUkwgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkZBUSBhcnRpY2xlcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRleHRTZXR0aW5ncyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3QWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BY3Rpb25Sb3cgJV0KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ik92ZXJ2aWV3Wm9vbSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkltYWdlTW9kZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJOYW1lU2hvcnQiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZUxvbmciPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUGFnaW5hdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0TG9uZyAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXJMb25nICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiMgc29ydCBvcmRlciBiYXIgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICBbJSBEYXRhLlNvcnRPcmRlckJhciAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9GQVFGb3VuZCIpICVdCiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBGQVEgZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9GQVFGb3VuZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEZvcm0iKSAlXQogICAgPHRhYmxlIGNsYXNzPSJUYWJsZVNtYWxsIE5vQ2VsbHNwYWNpbmciPgogICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1GQVFJRDtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDYXRlZ29yeUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9Q2F0ZWdvcnk7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2F0ZWdvcnlIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TGFuZ3VhZ2U7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2VIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0ZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9U3RhdGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkU3RhdGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRWYWxpZEhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9VmFsaWQ7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVmFsaWRIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VkSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUNoYW5nZWQ7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VkSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZEhlYWRlclNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyU29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRIZWFkZXJOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZEhlYWRlck5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRIZWFkZXIiKSAlXQojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVsZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlciIpICVdCiMgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFIZWFkZXJTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlclNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFIZWFkZXJOb3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlck5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFIZWFkZXIiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlciIpICVdCiMgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJIZWFkZXJTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlclNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJIZWFkZXJOb3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlck5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJIZWFkZXIiKSAlXQogICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF9bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV1fWyUgRGF0YS5Db3VudGVyIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvblslIElGIERhdGEuVmFsaWRJRCAhPSAxJV0gSW52YWxpZFslIEVORCAlXSIgPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgdXJpICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNsZWFuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDYXRlZ29yeSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSwgIjUwIikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2F0ZWdvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRWYWxpZCIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVmFsaWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VkIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayAlXSIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDx0ZD4KIyAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayAlXSIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICA8L3RkPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rICVdIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgIDwvdGQ+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgIDwvdGJvZHk+CiAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRm9ybSIpICVdCjwvZGl2Pgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkVtcHR5U2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5FbXB0eVNlYXJjaCB8IGh0bWwgJV0iIGlkPSJFbXB0eVNlYXJjaCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IlslIERhdGEuTmF2IHwgaHRtbCAlXSIvPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuUHJvZmlsZXNTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iU2VhcmNoUHJvZmlsZUFkZE5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlTmV3IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSIgaWQ9IlNlYXJjaEluc2VydCI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJGaWx0ZXJzIGluIHVzZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZGl0aW9uYWwgZmlsdGVycyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQWRkIGFub3RoZXIgYXR0cmlidXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlc1N0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiT3V0cHV0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0Rm9ybVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgIDwvZm9ybT4KCiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0ImlkPSJMYWJlbEZ1bGx0ZXh0Ij5bJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciIgaWQ9IkxhYmVsTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdIFslIFRyYW5zbGF0ZSgiKGUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KikiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIiBpZD0iTGFiZWxUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiIGlkPSJMYWJlbEtleXdvcmQiPlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyIgaWQ9IkxhYmVsVmFsaWRJRHMiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuVmFsaWRTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRHMiIGlkPSJMYWJlbExhbmd1YWdlSURzIj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlc1NlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJDYXRlZ29yeUlEcyIgaWQ9IkxhYmVsQ2F0ZWdvcnlJRHMiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcmllc1NlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyIgaWQ9IkxhYmVsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuU3RhdGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVNlYXJjaFR5cGUiIGlkPSJMYWJlbFZvdGVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIlZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5Wb3RlU2VhcmNoIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVNlYXJjaFR5cGUiIGlkPSJMYWJlbFJhdGVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIlJhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkFwcHJvdmVkU2VhcmNoIiBpZD0iTGFiZWxBcHByb3ZlZFNlYXJjaCI+WyUgVHJhbnNsYXRlKCJBcHByb3ZlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5BcHByb3ZlZFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJDcmVhdGVkVXNlcklEcyIgaWQ9IkxhYmVsQ3JlYXRlZFVzZXJJRHMiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZWRVc2VyU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VkVXNlcklEcyIgaWQ9IkxhYmVsTGFzdENoYW5nZWRVc2VySURzIj5bJSBUcmFuc2xhdGUoIkxhc3QgY2hhbmdlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkxhc3RDaGFuZ2VkVXNlclN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJJdGVtQ3JlYXRlVGltZVBvaW50IiBpZD0iTGFiZWxJdGVtQ3JlYXRlVGltZVBvaW50Ij5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0vPgogICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmcgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50U3RyZyAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXRTdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNyZWF0ZVRpbWVTbG90IiBpZD0iTGFiZWxJdGVtQ3JlYXRlVGltZVNsb3QiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJJdGVtQ2hhbmdlVGltZVBvaW50IiBpZD0iTGFiZWxJdGVtQ2hhbmdlVGltZVBvaW50Ij5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0vPgogICAgICAgICAgICBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmcgJV0gWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50U3RyZyAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXRTdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNoYW5nZVRpbWVTbG90IiBpZD0iTGFiZWxJdGVtQ2hhbmdlVGltZVNsb3QiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgIFslIERhdGEuQXR0cmlidXRlc09yaWdTdHJnICVdCgogICAgPC9maWVsZHNldD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJDb250ZW50Rm9vdGVyIENlbnRlciI+CiAgICA8YnV0dG9uIGlkPSJTZWFyY2hGb3JtU3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iUnVuIHNlYXJjaCI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXNlYXJjaCI+PC9pPiBbJSBUcmFuc2xhdGUoIlJ1biBzZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVgiKSAlXQo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAoWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSB8IGh0bWwgJV0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj5bJSBDb25maWcoIlByb2R1Y3ROYW1lIikgfCBodG1sICVdIChbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpIHwgaHRtbCAlXSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz5bJSBFbnYoIlVzZXJDaGFyc2V0IikgJV08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iWyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtOdW1iZXI9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj5bJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIENvbmZpZygiRnJvbnRlbmQ6OkltYWdlUGF0aCIpICVdaWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJGQVFGdWxsdGV4dCIpIHwgaHRtbCAlXSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPlslIENvbmZpZygiUHJvZHVjdE5hbWUiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiRkFRRnVsbHRleHQiKSB8IGh0bWwgJV0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+WyUgRW52KCJVc2VyQ2hhcnNldCIpICVdPC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj5bJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIENvbmZpZygiRnJvbnRlbmQ6OkltYWdlUGF0aCIpICVdaWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgU2VhcmNoIikgfCBodG1sICVdPC9oMT4KICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBDb2xsYXBzZWQiPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgU2VsZWN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iWyUgRGF0YS5OYXYgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBTcGFjaW5nVG9wIiBuYW1lPSJTZWxlY3RUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrIj48L2k+IFslIFRyYW5zbGF0ZSgiU2VsZWN0IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBTcGFjaW5nVG9wIiBuYW1lPSJFcmFzZVRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gU3BhY2luZ1RvcCIgbmFtZT0iU2VhcmNoVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsdGV4dCIgaWQ9IkxhYmVsRnVsbHRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIj5bJSBUcmFuc2xhdGUoIktleXdvcmQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iS2V5d29yZCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRHMiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ2F0ZWdvcnlJRHMiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3JpZXNTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZFNlYXJjaCIgPlslIFRyYW5zbGF0ZSgiQXBwcm92ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFwcHJvdmVkU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9Wb3RlU2V0Ij5bJSBUcmFuc2xhdGUoIlZvdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdm90ZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9Wb3RlU2V0IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlZvdGVTZWFyY2hPcHRpb246Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyB2b3RlcyIpIHwgaHRtbCAlXSB0eXBlPSJyYWRpbyIgaWQ9IlZvdGVQb2ludCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgIHZhbHVlPSJWb3RlUG9pbnQiIFslIERhdGEuaXRlbSgiVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5Wb3RlU2VhcmNoIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij5bJSBUcmFuc2xhdGUoIlJhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gcmF0ZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9SYXRlU2V0IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlJhdGVTZWFyY2hPcHRpb246Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyByYXRlIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlJhdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3JlYXRlZFVzZXJJRHMiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVkVXNlclN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VkVXNlcklEcyI+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQgYnkiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJBZ2VudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFzdENoYW5nZWRVc2VyU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGltZVNlYXJjaFR5cGUiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNwZWNpZmljIGRhdGUiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVBvaW50IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50U3RhcnRTdHJnICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iTm9DaGFuZ2VUaW1lU2V0IiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTcGVjaWZpYyBkYXRlIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgaWQ9IkNoYW5nZURhdGVQb2ludCIgbmFtZT0iQ2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50U3RhcnRTdHJnICVdIFslIERhdGEuSXRlbUNoYW5nZVRpbWVQb2ludFN0cmcgJV0gWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iQ2hhbmdlRGF0ZVJhbmdlIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXNzVwYyBTcGFjaW5nVG9wIEZBUURpdmlkZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2F2ZSBhcyBUZW1wbGF0ZT8iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iU2F2ZSBhcyBUZW1wbGF0ZSIgdHlwZT0iY2hlY2tib3giIGlkPSJTYXZlUHJvZmlsZSIgbmFtZT0iU2F2ZVByb2ZpbGUiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGUgTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsZSBuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iUHJvZmlsZSIgbmFtZT0iUHJvZmlsZSIgdmFsdWU9IlslIERhdGEuUHJvZmlsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQ2VudGVyIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXNlYXJjaCI+PC9pPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoIikgJV0K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkKCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gJm5kYXNoOyBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06IFslIERhdGEuTnVtYmVyICVdIDxzcGFuPiZtZGFzaDs8L3NwYW4+IFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgIDwvZGl2PgoKICAgIDx1bCBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgIDxsaT4KICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV07TmF2PVslIERhdGEuTmF2IHwgdXJpICVdIj4KICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aEl0ZW1FbGVtZW50IikgJV0KICAgICAgICA8bGk+WyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aEl0ZW1FbGVtZW50IikgJV0KICAgIDwvdWw+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJMYXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRkFRIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSwgIjE4IikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJLZXl3b3JkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtLZXl3b3JkPVslIERhdGEuS2V5d29yZCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iPlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJLZXl3b3JkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU3RhdGUsICIyNSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVmFsaWQpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWQsICIyNSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlLCAiMTgiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdBcHByb3ZhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFwcHJvdmFsIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkFwcHJvdmFsKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkFwcHJvdmFsLCAiMTgiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdBcHByb3ZhbCIpICVdCgojIHNob3cgZmFxIGR5bmFtaWMgZmllbGRzClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZExpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj48YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPjxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIHRhcmdldD0iX2JsYW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPjwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDJfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1JhdGluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlJhdGluZyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdIFslIERhdGEuVm90ZVJlc3VsdCAlXSUiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyIj48aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmF0ZVN0YXJUZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdSYXRpbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVm90ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVm90ZXMpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuVm90ZXMsICIxOCIpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdWb3RlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdOb1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVm90ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyB2b3RlcyBmb3VuZCEiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLiIpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdOb1ZvdGVzIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0gIChbJSBEYXRhLkNyZWF0ZWRCeVVzZXIgJV0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdICAoWyUgRGF0YS5DaGFuZ2VkQnlVc2VyICVdKTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVTaW1wbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlua2VkIE9iamVjdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiBpZD0iWyUgRGF0YS5NZW51SUQgfCBodG1sICVdIiBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iIFslIERhdGEuTGlua1BhcmFtICVdIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgaWQ9IkZBUUJvZHkiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudEhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iRG93bmxvYWRBdHRhY2htZW50IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEb3dubG9hZCBBdHRhY2htZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXTtGaWxlSUQ9WyUgRGF0YS5GaWxlSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFslIERhdGEuRmlsZXNpemUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudEhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQojIFNob3cgaW5mbywgdGhhdCBsaW5rcyB3aXRoaW4gdGhlIGlmcmFtZSBtdXN0IGJlIGNsaWNrZWQgd2l0aCBzdHJnL2NtZC9zaGlmdCAoZGVwZW5kaW5nIG9uIHRoZSB1c2VkIGJyb3dzZXIgYW5kIG9zKQojIHRvIG9wZW4gdGhlIGxpbmtzIGluIGEgbmV3IHdpbmRvdyB3aXRob3V0IHRoZSBzZWN1cml0eSBwZXJtaXNzaW9ucyBnaXZlbiB0byB0aGUgaWZyYW1lCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFNZXNzYWdlQnJvd3NlciI+CiAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNsb3NlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIG1lc3NhZ2UiKSB8IGh0bWwgJV0iIGhyZWY9IiMiPjxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQnJvd3NlckxpbmtNZXNzYWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJGQVFTdGF0ZU5hbWUiPihbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZU5hbWUpIHwgaHRtbCAlXSk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRIVE1MIikgJV0KIyBleGVjdXRlIElGcmFtZSBKUyBhc3luY2hyb25vdXNseS4gT3RoZXJ3aXNlIGl0IGNvdWxkIGhhcHBlbiBiZWZvcmUgb3VyIEFQSSB3YXMgbG9hZGVkCiMgdGhlIGZvbGxvd2luZyBKUyBjb2RlIG11c3QgYmUgd2l0aGluIHRoZSB0ZW1wbGF0ZSwgb3RoZXJ3aXNlIGl0IGNvdWxkIGhhcHBlbiwgdGhhdCBhbHNvIHRoaXMgY29kZSBpdHNlbGYgaXMgbm90IGxvYWRlZCB5ZXQKPHNjcmlwdD4KZnVuY3Rpb24gQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpIHsKICAgIGlmICh0eXBlb2YgRkFRID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkFnZW50LkZBUVpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgRkFRLkFnZW50LkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMgbXMtYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCIgY2xhc3M9IkZBUUZpZWxkIiBpZD0iSWZyYW1lRkFRWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIG9ubG9hZD0id2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uICgpeyBDaGVja0lGcmFtZUhlaWdodCgnSWZyYW1lRkFRWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTtGaWVsZD1bJSBEYXRhLkZpZWxkIHwgaHRtbCAlXTtbJSBFbnYoIlNlc3Npb25OYW1lIikgfCBodG1sICVdPVslIEVudigiU2Vzc2lvbklEIikgfCBodG1sICVdIj48L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50SFRNTCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29udGVudCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFWb3RpbmciKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUVZvdGluZyBDb250ZW50IiBpZD0iRkFRVm90aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEiKSB8IGh0bWwgJV08L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkZBUVZvdGUiIGNsYXNzPSJGQVFWb3RlRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJSYXRlQnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5bJSBUcmFuc2xhdGUoIm5vdCBoZWxwZnVsIikgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRVm90aW5nUmF0ZVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iUmF0ZUJ1dHRvblslIERhdGEuVmFsdWUgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVCdXR0b24gUmF0ZVVuQ2hlY2tlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXItbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVZvdGluZ1JhdGVSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJ2ZXJ5IGhlbHBmdWwiKSB8IGh0bWwgJV08L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIGNsYXNzPSJDbGVhciIgLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gSGlkZGVuIiBpZD0iUmF0ZVN1Ym1pdEJ1dHRvbiIgbmFtZT0iYnRuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJWb3RlIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJWb3RlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50RkFRWm9vbSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlZvdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikl0ZW1JRCIgdmFsdWU9IlslIERhdGEuSXRlbUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJhdGUiIHZhbHVlPSIiIGlkPSJSYXRlVmFsdWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVZvdGluZyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVDb21wbGV4IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMaW5rVGFibGVDb21wbGV4IikgJV0KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkKCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlpvb20iKSB8IGh0bWwgJV0gWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICBbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdOiBbJSBEYXRhLk51bWJlciAlXSA8c3Bhbj4mbWRhc2g7PC9zcGFuPiBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KCiAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgICAgICA8bGk+CiAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICA8L3VsPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZBUSBJbmZvcm1hdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iPlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJLZXl3b3JkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVmFsaWQpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWQsICIyNSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3QXBwcm92YWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBcHByb3ZhbCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5BcHByb3ZhbCkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5BcHByb3ZhbCkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3QXBwcm92YWwiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1JhdGluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlJhdGluZyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdIFslIERhdGEuVm90ZVJlc3VsdCAlXSUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSYXRlU3RhclRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhcnMgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1JhdGluZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3Vm90ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuVm90ZXMgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1ZvdGVzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld05vVm90ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHZvdGVzIGZvdW5kISIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuIikgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld05vVm90ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdIChbJSBEYXRhLkNyZWF0ZWRCeUxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSAgKFslIERhdGEuQ3JlYXRlZEJ5TG9naW4gfCBodG1sICVdKTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBEYXRhLkNoYW5nZWQgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXSAoWyUgRGF0YS5DcmVhdGVkQnlMb2dpbiB8IGh0bWwgJV0pIj5bJSBEYXRhLkNoYW5nZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0gIChbJSBEYXRhLkNyZWF0ZWRCeUxvZ2luIHwgaHRtbCAlXSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50SFRNTCIpICVdCiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5BZ2VudCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5BZ2VudC5GQVFab29tID09PSAnb2JqZWN0JykgewogICAgICAgIEZBUS5BZ2VudC5GQVFab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnIycgKyBJRnJhbWVJRCkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCk7CiAgICAgICAgfSwgNTAwKTsKICAgIH0KfQo8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIEFwcGVuZCBzZXNzaW9uIGluZm8gdG8gVVJMIGJlY2F1c2UgSUUgd2lsbCBub3Qgc2VuZCBjb29raWVzLgojIFNldCAnYWxsb3ctcG9wdXBzJyB0byBhbGxvdyBJRTEwKyB0byBvcGVuIGxpbmtzLiByZWY6IGh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvd2lraS9DaGFuZ2VQcm9wb3NhbHMvc2FuZGJveF9hbGxvd19wb3B1cHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIGNsYXNzPSJGQVFGaWVsZCIgaWQ9IklmcmFtZUZBUVslIERhdGEuRmllbGQgfCBodG1sICVdIiBvbmxvYWQ9IndpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKXsgQ2hlY2tJRnJhbWVIZWlnaHQoJ0lmcmFtZUZBUVslIERhdGEuRmllbGQgfCBodG1sICVdJyk7IH0sIDUwMCk7IiBzcmM9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV07RmllbGQ9WyUgRGF0YS5GaWVsZCB8IGh0bWwgJV07WyUgRW52KCJTZXNzaW9uTmFtZSIpIHwgaHRtbCAlXT1bJSBFbnYoIlNlc3Npb25JRCIpIHwgaHRtbCAlXSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudEhUTUwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGlucHV0IGlkPSJGQVFJRCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJGQVFJRCIgdmFsdWU9IlslIERhdGEuSUQgfCBodG1sICVdIj4KICAgIDxpbnB1dCBpZD0iRkFRVGl0bGUiIHR5cGU9ImhpZGRlbiIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiAgICA8aW5wdXQgaWQ9IkZBUUJvZHkiIHR5cGU9ImhpZGRlbiIgbmFtZT0iQm9keSIgdmFsdWU9IlslIERhdGEuRnVsbEJvZHkgfCBodG1sICVdIj4KICAgIDxpbnB1dCBpZD0iRkFRUHVibGljTGluayIgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rIiAgdmFsdWU9IlslIERhdGEuUHVibGljbGluayAlXSI+Cgo8L2Rpdj4KCjxkaXYgY2xhc3M9Ilpvb21TbWFsbEZvb3RlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlVwZGF0ZUFydGljbGVTdWJqZWN0IikgJV0KICAgIDxpbnB1dCBpZD0iVXBkYXRlQXJ0aWNsZVN1YmplY3RPcHRpb24iIHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iWm9vbVNtYWxsQnV0dG9uIiBuYW1lPSJVcGRhdGVBcnRpY2xlU3ViamVjdE9wdGlvbiIgY2hlY2tlZD0iY2hlY2tlZCIgdmFsdWUiMSIvPgogICAgPGxhYmVsIGZvcj0iVXBkYXRlQXJ0aWNsZVN1YmplY3RPcHRpb24iPlslIFRyYW5zbGF0ZSgiQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QiKSB8IGh0bWwgJV08L2xhYmVsPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXBkYXRlQXJ0aWNsZVN1YmplY3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnNlcnRUZXh0IikgJV0KICAgIDxidXR0b24gaWQ9Ikluc2VydFRleHQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkluc2VydCBGQVEgVGV4dCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluc2VydFRleHQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5zZXJ0RnVsbCIpICVdCiAgICA8YnV0dG9uIGlkPSJJbnNlcnRGdWxsIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+WyUgVHJhbnNsYXRlKCJJbnNlcnQgRnVsbCBGQVEiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJJbnNlcnRGdWxsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluc2VydExpbmsiKSAlXQogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0TGluayIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiSW5zZXJ0IEZBUSBMaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5zZXJ0TGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnNlcnRUZXh0QW5kTGluayIpICVdCiAgICA8YnV0dG9uIGlkPSJJbnNlcnRUZXh0QW5kTGluayIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluc2VydFRleHRBbmRMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluc2VydEZ1bGxBbmRMaW5rIikgJV0KICAgIDxidXR0b24gaWQ9Ikluc2VydEZ1bGxBbmRMaW5rIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+WyUgVHJhbnNsYXRlKCJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5zZXJ0RnVsbEFuZExpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3IiKSAlXQogICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3IiKSAlXQoKICAgIDxhIGlkPSJDYW5jZWwiIGNsYXNzPSJbJSBEYXRhLkNhbmNlbEJ1dHRvbkNsYXNzIHwgaHRtbCAlXSIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8YnIgLz4KCjwvZGl2Pgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCiAgICAgICAgWyUgSUYgRGF0YS5SZWxhdGVkRkFRQXJ0aWNsZUxpc3Quc2l6ZSAlXQoKICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgRml4ZWRMYXlvdXQiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgWyUgRk9SRUFDSCBGQVFBcnRpY2xlIElOIERhdGEuUmVsYXRlZEZBUUFydGljbGVMaXN0ICVdCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkZBUVRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIEZBUUFydGljbGUuSXRlbUlEIHwgdXJpICVdIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlslIEZBUUFydGljbGUuVGl0bGUgfCBodG1sICVdIChbJSBGQVFBcnRpY2xlLkNhdGVnb3J5TmFtZSB8IGh0bWwgJV0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGQVFBcnRpY2xlLlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFWb3RlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBGQVFBcnRpY2xlLlZvdGVzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIEZBUUFydGljbGUuU3RhckNvdW50ZXIgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRklMVEVSIHJlcGVhdChGQVFBcnRpY2xlLlN0YXJDb3VudGVyKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGSUxURVIgcmVwZWF0KDUgLSBGQVFBcnRpY2xlLlN0YXJDb3VudGVyKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyLW8iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGSUxURVIgcmVwZWF0KDUpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3Rhci1vIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFDYXRlZ29yaWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRkFRQXJ0aWNsZS5DYXRlZ29yeU5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRRGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGQVFBcnRpY2xlLkNoYW5nZWQgfCBMb2NhbGl6ZSgiRGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgWyUgRU5EICVdCg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJvb29Db250ZW50Ij4KICAgIDxkaXYgaWQ9Im9vb0hlYWRlciI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRkFRIEV4cGxvcmVyIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0nb29vZyc+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayIpICVdCiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9J29vb2cnPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2gzPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBuYW1lPSJjb21wb3NlIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkN1c3RvbWVyRkFRRXhwbG9yZXIiLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgoKICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0nb29vZyc+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLXNlYXJjaCI+PC9pPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJXaGF0IiBpZD0ib29vU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdGQVEgU2VhcmNoJykgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9J29vb1NlYXJjaExhYmVsJz5bJSBUcmFuc2xhdGUoJ0ZBUSBTZWFyY2gnKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2gzPgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJvb29NYWluQm94Ij4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1YmNhdGVnb3JpZXMiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb1N1YkJveCI+CiMgbm8gd2hpdGVzcGFjZS9uZXdsaW5lIHJlc3VsdHMgaW4gbm8gd2hpdGVzcGFjZSBiZXR3ZWVuIGRpc3BsYXk6IGlubGluZS1ibG9jazsgZWxlbWVudHMKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXTxhIGNsYXNzPSJvb29TdWIiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TdWJDYXRlZ29yeUNvdW50ICVdCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im9vb1N1YkNvdW50Ij5bJSBEYXRhLlN1YkNhdGVnb3J5Q291bnQgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJvb29nIG9vb0NvbW1lbnQiPlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2E+WyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KIyBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1YmNhdGVnb3JpZXMiKSAlXQoKClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUl0ZW1MaXN0IikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KWyUgSUYgRGF0YS5DYXRlZ29yeUlEID09IDAgJV0KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyIpIHwgaHRtbCAlXTwvaDI+ClslIEVMU0UgJV0KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlcyIpIHwgaHRtbCAlXTwvaDI+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdpbmF0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24gb29vMTBnIj4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vRkFRQm94Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9GQVFEYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgPGEgY2xhc3M9Im9vb0ZBUSIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGFydGljbGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJOb0ZBUURhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8YSBjbGFzcz0ib29vRkFRIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkZBUUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJMYW5ndWFnZSBvb29nIiB0aXRsZT0iWyUgRGF0YS5MYW5ndWFnZSB8IGh0bWwgJV0iPlslIERhdGEuTGFuZ3VhZ2UgfCB0cnVuY2F0ZSg1KSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRSXRlbUxpc3QiKSAlXQoKICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgoKPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIlRoaXMgbWlnaHQgYmUgaGVscGZ1bCIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICBbJSBJRiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlTGlzdC5zaXplICVdCiAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgogICAgICAgIFslIEZPUkVBQ0ggRkFRQXJ0aWNsZSBJTiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlTGlzdCAlXQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8aHI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0nb29vMTIgb29vbCcgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtJdGVtSUQ9WyUgRkFRQXJ0aWNsZS5JdGVtSUQgfCB1cmkgJV0iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iWyUgRkFRQXJ0aWNsZS5UaXRsZSB8IGh0bWwgJV0gKFslIEZBUUFydGljbGUuQ2F0ZWdvcnlOYW1lIHwgaHRtbCAlXSkiPgogICAgICAgICAgICAgICAgICAgIFslIEZBUUFydGljbGUuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiMgICAgICAgICAgICBbJSBJRiBGQVFBcnRpY2xlLlZvdGVzICYmIERhdGEuVm90ZVN0YXJzVmlzaWJsZSAmJiBGQVFBcnRpY2xlLlN0YXJDb3VudGVyID49IERhdGEuVm90ZVN0YXJzVmlzaWJsZSAlXQojICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBGQVFBcnRpY2xlLlN0YXJDb3VudGVyIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAtIFslIEZJTFRFUiByZXBlYXQoRkFRQXJ0aWNsZS5TdGFyQ291bnRlcikgJV08c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+PC9zcGFuPlslIEVORCAlXQojICAgICAgICAgICAgICAgIDwvc3Bhbj4KIyAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICA8L2xpPgogICAgICAgIFslIEVORCAlXQogICAgICAgIDwvdWw+CiAgICBbJSBFTFNJRiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nICVdCiAgICAgICAgPGRpdiBjbGFzcz0iSGludCI+WyUgVHJhbnNsYXRlKCJGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuIikgfCBodG1sICVdPC9kaXY+CiAgICBbJSBFTFNFICVdCiAgICAgICAgPGRpdiBjbGFzcz0iSGludCI+WyUgVHJhbnNsYXRlKCJUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuIikgfCBodG1sICVdPC9kaXY+CiAgICBbJSBFTkQgJV0KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iU2VhcmNoIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2ZpbGVzU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9IlNlbGVjdFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWxlY3QiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iRXJhc2VUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9IlNlYXJjaFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgoKICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiBcIkpvaG4qblwiIG9yIFwiV2lsbCpcIikiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsVGV4dCI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0IikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iRnVsbFRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iWyUgRGF0YS5GdWxsdGV4dCB8IGh0bWwgJV0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV0iIHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZCI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IktleXdvcmQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcmllc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZvdGUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHZvdGUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVm90ZVNldCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJWb3RlU2VhcmNoT3B0aW9uOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RWb3RlU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPVslIFRyYW5zbGF0ZSgiU3BlY2lmaWMgdm90ZXMiKSB8IGh0bWwgJV0gdHlwZT0icmFkaW8iIGlkPSJWb3RlUG9pbnQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iVm90ZVBvaW50IiBbJSBEYXRhLml0ZW0oIlZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVBvaW50Ij5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVm90ZVNlYXJjaCIgdmFsdWU9IlslIERhdGEuVm90ZVNlYXJjaCB8IGh0bWwgJV0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJhdGUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHJhdGUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1JhdGVTZXQiPlslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyByYXRlIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iUmF0ZVBvaW50IiBbJSBEYXRhLml0ZW0oIlJhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVBvaW50Ij5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGltZVNlYXJjaFR5cGUiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGltZSByZXN0cmljdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9UaW1lU2V0IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UaW1lU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNwZWNpZmljIGRhdGUiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGF0ZSI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnQgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0ICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGVzdCJ7RGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRhdGVSYW5nZSI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTYXZlUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTYXZlIGFzIFRlbXBsYXRlPyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJTYXZlIGFzIFRlbXBsYXRlIiB0eXBlPSJjaGVja2JveCIgaWQ9IlNhdmVQcm9maWxlIiBuYW1lPSJTYXZlUHJvZmlsZSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQcm9maWwiPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGUgTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsIG5hbWUiIHR5cGU9InRleHQiIGlkPSJQcm9maWwiIG5hbWU9IlByb2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iWyUgRGF0YS5Qcm9maWxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiT3V0cHV0IHRvIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2giKSAlXQo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIENvbmZpZygiRkFROjpGQVFIb29rIikgfCBodG1sICVdKTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIENvbmZpZygiRkFROjpGQVFIb29rIikgfCBodG1sICVdKTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPlslIEVudigiVXNlckNoYXJzZXQiKSAlXTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSJbJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO051bWJlcj17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiRkFRRnVsbHRleHQiKSB8IGh0bWwgJV0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj5bJSBDb25maWcoIlByb2R1Y3ROYW1lIikgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKCJDdXN0b21lciIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJGQVFGdWxsdGV4dCIpIHwgaHRtbCAlXSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz5bJSBFbnYoIlVzZXJDaGFyc2V0IikgJV08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iWyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyBbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSIpICVdIFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUxvYWRQcm9maWxlO1slIERhdGEuTGluayB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyBbJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2luYXRpb24iKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlRhYnMgUGFnaW5hdGlvbiI+CiAgICAgICAgICAgIDxzdHJvbmc+WyUgRGF0YS5SZXN1bHQgfCBodG1sICVdPC9zdHJvbmc+IFslIFRyYW5zbGF0ZSgib2YiKSB8IGh0bWwgJV0gPHN0cm9uZz5bJSBEYXRhLlRvdGFsSGl0cyB8IGh0bWwgJV08L3N0cm9uZz4gLSBbJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV06IFslIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IlNlYXJjaFRlcm1zIj4KICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2VhcmNoIFJlc3VsdHMgZm9yIikgfCBodG1sICVdOjwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFRlcm1zIikgJV0KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZSB8IGh0bWwgJV06IFslIERhdGEuVmFsdWUgfCBodG1sICVdCiMgaGlkZSByZW1vdmUgbGluaywgZnVuY3Rpb25hbGl0eSBpcyBub3QgeWV0IGltcGxlbWVudGVkCiMgICAgICAgICAgICAgICAgPGEgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIikgfCBodG1sICVdIiBocmVmPSJbJSBEYXRhLlNlYXJjaFZhbHVlICVdIj4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hUZXJtcyIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5GQVFJRFNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1GQVFJRDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9VGl0bGU7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtQcm9maWxlPVslIERhdGEuUHJvZmlsZSB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBbJSBEYXRhLkNhdGVnb3J5U29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUNhdGVnb3J5O09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07UHJvZmlsZT1bJSBEYXRhLlByb2ZpbGUgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSBbJSBEYXRhLkxhbmd1YWdlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUxhbmd1YWdlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07UHJvZmlsZT1bJSBEYXRhLlByb2ZpbGUgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNoYW5nZWRTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9Q2hhbmdlZDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIFslIERhdGEuQ1NTICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07U2hvd0Nsb3NlZFRpY2tldHM9WyUgRGF0YS5TaG93Q2xvc2VkIHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJFbXB0eU1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJObyBGQVEgZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPVslIERhdGEuRkFRSUQgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj5bJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UdGl0bGUgJV0iPlslIERhdGEuQ2xlYW5UaXRsZXwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDYXRlZ29yeSI+WyUgRGF0YS5DYXRlZ29yeU5hbWUgfCB0cnVuY2F0ZSg2MCkgfCBodG1sICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiPlslIERhdGEuTGFuZ3VhZ2UgfCB0cnVuY2F0ZSg1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2hhbmdlZCI+WyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkR5bmFtaWNGaWVsZCIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQogICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93IEJpZ0J1dHRvbnMiPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtbJSBEYXRhLkxpbmsgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyBbJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KPC9kaXY+Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkKCjxkaXYgaWQ9Im9vb0NvbnRlbnQiPgoKICAgIDxkaXYgaWQ9Im9vb0hlYWRlciI+ICAgICAgICAgICAgCiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRkFRIEV4cGxvcmVyIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0nb29vZyc+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aEl0ZW1FbGVtZW50IikgJV0KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0nb29vZyc+WyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gzPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aEl0ZW1FbGVtZW50IikgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0ib29vU2VhcmNoQm94Ij4KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQ3VzdG9tZXJGQVFFeHBsb3JlciIvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSdvb29nJz4KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IldoYXQiIGlkPSJvb29TZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ0ZBUSBTZWFyY2gnKSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0nb29vU2VhcmNoTGFiZWwnPlslIFRyYW5zbGF0ZSgnRkFRIFNlYXJjaCcpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgIDx1bCBpZD0iRkFRT3B0aW9ucyI+CiMgICAgICAgICAgICAgICAgPGxpPgojICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFQcmludDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJQcmludCBBc1BvcHVwIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJQcmludCIpIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcHJpbnQiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiUHJpbnQiKSB8IGh0bWwgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDwvYT4KIyAgICAgICAgICAgICAgICA8L2xpPgojICAgICAgICAgICAgPC91bD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9Im9vb01haW5Cb3giPgoKICAgICAgICA8ZGl2IGNsYXNzPSdXaWRnZXRTaW1wbGUnPgogICAgICAgICAgICA8aDIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgCiAgICAgICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdOjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcGFwZXJjbGlwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJEb3dubG9hZEF0dGFjaG1lbnQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRvd25sb2FkIEF0dGFjaG1lbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV07RmlsZUlEPVslIERhdGEuRmlsZUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBbJSBEYXRhLkZpbGVzaXplIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50SGVhZGVyIikgJV0KCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQojIyBTaG93IGluZm8sIHRoYXQgbGlua3Mgd2l0aGluIHRoZSBpZnJhbWUgbXVzdCBiZSBjbGlja2VkIHdpdGggc3RyZy9jbWQvc2hpZnQgKGRlcGVuZGluZyBvbiB0aGUgdXNlZCBicm93c2VyIGFuZCBvcykKIyMgdG8gb3BlbiB0aGUgbGlua3MgaW4gYSBuZXcgd2luZG93IHdpdGhvdXQgdGhlIHNlY3VyaXR5IHBlcm1pc3Npb25zIGdpdmVuIHRvIHRoZSBpZnJhbWUKIyAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFNZXNzYWdlQnJvd3NlciI+CiMgICAgICAgICAgICAgICAgICAgIDxwPgojICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLiIpIHwgaHRtbCAlXQojICAgICAgICAgICAgICAgICAgICA8L3A+CiMgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDbG9zZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQ2xvc2UgdGhpcyBtZXNzYWdlIikgfCBodG1sICVdIiBocmVmPSIjIj48aSBjbGFzcz0iZmEgZmEtdGltZXMiPjwvaT48L2E+CiMgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICA8L2xpPgojWyUgUmVuZGVyQmxvY2tFbmQoIkJyb3dzZXJMaW5rTWVzc2FnZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50IikgJV0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV06PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ0cnVlIiBuYW1lPSJGaWVsZFN0YXRlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudEhUTUwiKSAlXQojIGV4ZWN1dGUgSUZyYW1lIEpTIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UgaXQgY291bGQgaGFwcGVuIGJlZm9yZSBvdXIgQVBJIHdhcyBsb2FkZWQKIyB0aGUgZm9sbG93aW5nIEpTIGNvZGUgbXVzdCBiZSB3aXRoaW4gdGhlIHRlbXBsYXRlLCBvdGhlcndpc2UgaXQgY291bGQgaGFwcGVuLCB0aGF0IGFsc28gdGhpcyBjb2RlIGl0c2VsZiBpcyBub3QgbG9hZGVkIHlldAo8c2NyaXB0PgpmdW5jdGlvbiBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCkgewogICAgaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsKICAgICAgICBGQVEuQ3VzdG9tZXIuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyMnICsgSUZyYW1lSUQpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpOwogICAgICAgIH0sIDUwMCk7CiAgICB9Cn0KPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUJvZHkiPgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXScpOyB9LCA1MDApOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO0ZpZWxkPVslIERhdGEuRmllbGQgfCBodG1sICVdO1slIEVudigiU2Vzc2lvbk5hbWUiKSB8IGh0bWwgJV09WyUgRW52KCJTZXNzaW9uSUQiKSB8IGh0bWwgJV0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudEhUTUwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQoKICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgaWQ9Ilpvb21TaWRlYmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIkZBUSBJbmZvcm1hdGlvbiIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8dWwgaWQ9Ik1ldGFkYXRhIj4KICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJBcnRpY2xlIE51bWJlciIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgoKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IktleXdvcmRzQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L3NwYW4+ClslIFJlbmRlckJsb2NrU3RhcnQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleXdvcmQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkIikgfCBodG1sICVdOiBbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO1N1YmFjdGlvbj1TZWFyY2g7S2V5d29yZD1bJSBEYXRhLktleXdvcmQgfCB1cmkgJV0iPlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KCiMgc2hvdyBmYXEgZHluYW1pYyBmaWVsZHMKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZCIpICVdCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICA8bGk+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9zcGFuPgojICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZTEgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9zcGFuPgojICAgICAgICAgICAgICAgIDwvbGk+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICA8bGk+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9zcGFuPgojICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZTIgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9zcGFuPgojICAgICAgICAgICAgICAgIDwvbGk+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3UmF0aW5nIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkgUmF0aW5nTGFiZWwiPlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdOjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyIj48aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFycyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyVGV4dCIgdGl0bGU9IlslIERhdGEuU3RhcnMgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGFycyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJvdXQgb2YgNSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdSYXRpbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBEYXRhLlZvdGVzIHwgaHRtbCAlXSI+WyUgRGF0YS5Wb3RlcyB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVZvdGluZyIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkZBUVZvdGUiIGNsYXNzPSJQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iVm90aW5nQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZvdGluZ0JveCBWaXNpYmxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJGQVFWb3RpbmciIGNsYXNzPSJGQVFWb3RpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIlJhdGluZyIpIHwgaHRtbCAlXTo8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTWVzc2VuZ2VyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlZvdGluZ1F1ZXN0aW9uIj5bJSBUcmFuc2xhdGUoIkhvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUxhYmVsQmVmb3JlIG9vb2ciPlslIFRyYW5zbGF0ZSgibm90IGhlbHBmdWwiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVZvdGluZ1JhdGVSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUmF0ZUJ1dHRvblslIERhdGEuVmFsdWUgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlQnV0dG9uIFJhdGVVbkNoZWNrZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3Rhci1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFWb3RpbmdSYXRlUm93IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlTGFiZWxBZnRlciBvb29nIj5bJSBUcmFuc2xhdGUoInZlcnkgaGVscGZ1bCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQ3VzdG9tZXJGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWb3RlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3cgVm90aW5nQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgIGlkPSJSYXRlU3VibWl0QnV0dG9uIiBjbGFzcz0iSGlkZGVuIG9vb1hTIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmF0ZSIgdmFsdWU9IlslIERhdGEuU2VsZWN0ZWRSYXRlIHwgaHRtbCAlXSJpZD0iUmF0ZVZhbHVlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRVm90aW5nIikgJV0KCiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJvb29Db250ZW50Ij4KICAgIDxkaXYgaWQ9Im9vb0hlYWRlciI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRkFRIEV4cGxvcmVyIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9J29vb2cnPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsiKSAlXQogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSdvb29nJz5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9oMz4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJvb29TZWFyY2hCb3giPgogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJQdWJsaWNGQVFFeHBsb3JlciIvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSdvb29nJz4KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IldoYXQiIGlkPSJvb29TZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ0ZBUSBTZWFyY2gnKSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0nb29vU2VhcmNoTGFiZWwnPlslIFRyYW5zbGF0ZSgnRkFRIFNlYXJjaCcpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9Im9vb01haW5Cb3giPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3ViY2F0ZWdvcmllcyIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3ViY2F0ZWdvcmllcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vU3ViQm94Ij4KIyBubyB3aGl0ZXNwYWNlL25ld2xpbmUgcmVzdWx0cyBpbiBubyB3aGl0ZXNwYWNlIGJldHdlZW4gZGlzcGxheTogaW5saW5lLWJsb2NrOyBlbGVtZW50cwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdFJvdyIpICVdPGEgY2xhc3M9Im9vb1N1YiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgIDxoMz5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlN1YkNhdGVnb3J5Q291bnQgJV0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ib29vU3ViQ291bnQiPlslIERhdGEuU3ViQ2F0ZWdvcnlDb3VudCB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im9vb2cgb29vQ29tbWVudCI+WyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvYT5bJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQojIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdFJvdyIpCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViY2F0ZWdvcmllcyIpICVdCgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRSXRlbUxpc3QiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgpbJSBJRiBEYXRhLkNhdGVnb3J5SUQgPT0gMCAlXQogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzIikgfCBodG1sICVdPC9oMj4KWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGVzIikgfCBodG1sICVdPC9oMj4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2luYXRpb24iKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUGFnaW5hdGlvbiBvb28xMGciPgogICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+WyUgRGF0YS5SZXN1bHQgfCBodG1sICVdPC9zdHJvbmc+IFslIFRyYW5zbGF0ZSgib2YiKSB8IGh0bWwgJV0gPHN0cm9uZz5bJSBEYXRhLlRvdGFsSGl0cyB8IGh0bWwgJV08L3N0cm9uZz4gLSBbJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV06IFslIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYWdpbmF0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb29GQVFCb3giPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0ZBUURhdGFGb3VuZE1zZyIpICVdCiAgICAgICAgICAgICAgICA8YSBjbGFzcz0ib29vRkFRIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJObyBGQVEgYXJ0aWNsZXMgZm91bmQuIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRkFRRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJvb29GQVEiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkZBUUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJMYW5ndWFnZSBvb29nIiB0aXRsZT0iWyUgRGF0YS5MYW5ndWFnZSB8IGh0bWwgJV0iPlslIERhdGEuTGFuZ3VhZ2UgfCB0cnVuY2F0ZSg1KSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRSXRlbUxpc3QiKSAlXQoKICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iU2VhcmNoIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdIiB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIGlkPSJOdW1iZXIiIHNpemU9IjMwIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCoiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gXCJKb2huKm5cIiBvciBcIldpbGwqXCIpIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRnVsbFRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IkZ1bGxUZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiPlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIktleXdvcmQiKSB8IGh0bWwgJV0iIHR5cGU9InRleHQiIGlkPSJLZXl3b3JkIiBuYW1lPSJLZXl3b3JkIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3JpZXNTdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWb3RlIHJlc3RyaWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyB2b3RlIHNldHRpbmdzIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgIGlkPSJOb1ZvdGVTZXQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UVm90ZVNldCI+WyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT1bJSBUcmFuc2xhdGUoIlNwZWNpZmljIHZvdGVzIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iVm90ZVBvaW50IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlZvdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZvdGVQb2ludCI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlZvdGVTZWFyY2giIHZhbHVlPSJbJSBEYXRhLlZvdGVTZWFyY2ggfCBodG1sICVdIiBjbGFzcz0iVzI1cGMiLz4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSYXRlIHJlc3RyaWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyByYXRlIHNldHRpbmdzIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgIGlkPSJOb1JhdGVTZXQiIG5hbWU9IlJhdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPVslIFRyYW5zbGF0ZSgiU3BlY2lmaWMgcmF0ZSIpIHwgaHRtbCAlXSB0eXBlPSJyYWRpbyIgaWQ9IlJhdGVQb2ludCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IlJhdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlJhdGVQb2ludCI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRpbWUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVGltZVNldCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVGltZVNldCI+WyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTcGVjaWZpYyBkYXRlIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGUiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiAgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlIj5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGF0ZSByYW5nZSIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJEYXRlUmFuZ2UiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPlslIFRyYW5zbGF0ZSgiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0b3AgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIk91dHB1dCB0byIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0Rm9ybVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoIikgJV0K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpIHwgaHRtbCAlXSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPlslIENvbmZpZygiUHJvZHVjdE5hbWUiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIlB1YmxpYyIpIHwgaHRtbCAlXSAoWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSB8IGh0bWwgJV0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+WyUgRW52KCJVc2VyQ2hhcnNldCIpICVdPC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+WyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBDb25maWcoIkZyb250ZW5kOjpJbWFnZVBhdGgiKSAlXWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIkZBUUZ1bGx0ZXh0IikgfCBodG1sICVdKTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIkZBUUZ1bGx0ZXh0IikgfCBodG1sICVdKTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPlslIEVudigiVXNlckNoYXJzZXQiKSAlXTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSJbJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyBbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSIpICVdIFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJhY2siKSAlXQogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLlNlYXJjaEJhY2tMaW5rIHwgaHRtbCAlXSIgY2xhc3M9Ikhpc3RvcnlCYWNrIj4mbGFycjsgWyUgVHJhbnNsYXRlKCJCYWNrIHRvIEZBUSBFeHBsb3JlciIpIHwgaHRtbCAlXTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQmFjayIpICVdCiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7IFslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYWdpbmF0aW9uIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggUmVzdWx0cyBmb3IiKSB8IGh0bWwgJV06PC9oMj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoVGVybXMiKSAlXQogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlIHwgaHRtbCAlXTogWyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV0KIyBoaWRlIHJlbW92ZSBsaW5rLCBmdW5jdGlvbmFsaXR5IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKIyAgICAgICAgICAgICAgICA8YSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBTZWFyY2ggVGVybS4iKSB8IGh0bWwgJV0iIGhyZWY9IlslIERhdGEuU2VhcmNoVmFsdWUgJV0iPiZ0aW1lczs8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFRlcm1zIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBbJSBEYXRhLkZBUUlEU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7WyUgRGF0YS5Qcm9maWxlIHwgaHRtbCAlXVNvcnRCeT1GQVFJRDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PVRpdGxlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgWyUgRGF0YS5DYXRlZ29yeVNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1slIERhdGEuUHJvZmlsZSB8IGh0bWwgJV1Tb3J0Qnk9Q2F0ZWdvcnk7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuTGFuZ3VhZ2VTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PUxhbmd1YWdlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNoYW5nZWRTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PUNoYW5nZWQ7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkR5bmFtaWNGaWVsZCBbJSBEYXRhLkNTUyAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1Nob3dDbG9zZWRUaWNrZXRzPVslIERhdGEuU2hvd0Nsb3NlZCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXTtQcm9maWxlPVslIERhdGEuUHJvZmlsZSB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGRhdGEgZm91bmQuIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJNYXN0ZXJBY3Rpb24iIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5GQVFJRCB8IHVyaSAlXTtab29tQmFja0xpbms9WyUgRGF0YS5ab29tQmFja0xpbmsgfCB1cmkgJV07IiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSIgdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiPlslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIj5bJSBEYXRhLkxhbmd1YWdlIHwgdHJ1bmNhdGUoNSkgfCBodG1sICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoYW5nZWQiIHRpdGxlPSJbJSBEYXRhLkNoYW5nZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0iPlslIERhdGEuQ2hhbmdlZCB8IHRydW5jYXRlKDIwKSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRHluYW1pY0ZpZWxkIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3cgQmlnQnV0dG9ucyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUxvYWRQcm9maWxlO1slIERhdGEuTGluayB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7IFslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJUYWJzIFBhZ2luYXRpb24iPgogICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQo8L2Rpdj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkKCjxkaXYgaWQ9Im9vb0NvbnRlbnQiPgoKICAgIDxkaXYgaWQ9Im9vb0hlYWRlciI+ICAgICAgICAgICAgCiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRkFRIEV4cGxvcmVyIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9J29vb2cnPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9J29vb2cnPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMz4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBuYW1lPSJjb21wb3NlIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlB1YmxpY0ZBUUV4cGxvcmVyIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KCiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9J29vb2cnPgogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1zZWFyY2giPjwvaT4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iV2hhdCIgaWQ9Im9vb1NlYXJjaCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnRkFRIFNlYXJjaCcpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSdvb29TZWFyY2hMYWJlbCc+WyUgVHJhbnNsYXRlKCdGQVEgU2VhcmNoJykgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPHVsIGlkPSJGQVFPcHRpb25zIj4KIyAgICAgICAgICAgICAgICA8bGk+CiMgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFQcmludDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJQcmludCBBc1BvcHVwIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJQcmludCIpIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcHJpbnQiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiUHJpbnQiKSB8IGh0bWwgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDwvYT4KIyAgICAgICAgICAgICAgICA8L2xpPgojICAgICAgICAgICAgPC91bD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9Im9vb01haW5Cb3giPgoKICAgICAgICA8ZGl2IGNsYXNzPSdXaWRnZXRTaW1wbGUnPgogICAgICAgICAgICA8aDIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgCiAgICAgICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iUHVibGljIFZpc2libGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXR0YWNobWVudHMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXBhcGVyY2xpcCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iRG93bmxvYWRBdHRhY2htZW50IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEb3dubG9hZCBBdHRhY2htZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO0ZpbGVJRD1bJSBEYXRhLkZpbGVJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgWyUgRGF0YS5GaWxlc2l6ZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudEhlYWRlciIpICVdCgojWyUgUmVuZGVyQmxvY2tTdGFydCgiQnJvd3NlckxpbmtNZXNzYWdlIikgJV0KIyMgU2hvdyBpbmZvLCB0aGF0IGxpbmtzIHdpdGhpbiB0aGUgaWZyYW1lIG11c3QgYmUgY2xpY2tlZCB3aXRoIHN0cmcvY21kL3NoaWZ0IChkZXBlbmRpbmcgb24gdGhlIHVzZWQgYnJvd3NlciBhbmQgb3MpCiMjIHRvIG9wZW4gdGhlIGxpbmtzIGluIGEgbmV3IHdpbmRvdyB3aXRob3V0IHRoZSBzZWN1cml0eSBwZXJtaXNzaW9ucyBnaXZlbiB0byB0aGUgaWZyYW1lCiMgICAgICAgICAgICA8bGk+CiMgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRkFRTWVzc2FnZUJyb3dzZXIiPgojICAgICAgICAgICAgICAgICAgICA8cD4KIyAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4iKSB8IGh0bWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9wPgojICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2xvc2UiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgbWVzc2FnZSIpIHwgaHRtbCAlXSIgaHJlZj0iIyI+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+PC9hPgojICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlB1YmxpYyBWaXNpYmxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXTo8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50SFRNTCIpICVdCiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lci5GQVFab29tID09PSAnb2JqZWN0JykgewogICAgICAgIEZBUS5DdXN0b21lci5GQVFab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnIycgKyBJRnJhbWVJRCkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCk7CiAgICAgICAgfSwgNTAwKTsKICAgIH0KfQo8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlQm9keSI+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIGNsYXNzPSJGQVFGaWVsZCIgaWQ9IklmcmFtZUZBUVslIERhdGEuRmllbGQgfCBodG1sICVdIiBvbmxvYWQ9IndpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKXsgQ2hlY2tJRnJhbWVIZWlnaHQoJ0lmcmFtZUZBUVslIERhdGEuRmllbGQgfCBodG1sICVdJyk7IH0sIDUwMCk7IiBzcmM9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO0ZpZWxkPVslIERhdGEuRmllbGQgfCBodG1sICVdIj48L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRIVE1MIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db250ZW50ICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50IikgJV0KCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGlkPSJab29tU2lkZWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJGQVEgSW5mb3JtYXRpb24iKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHVsIGlkPSJNZXRhZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiQXJ0aWNsZSBOdW1iZXIiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3Bhbj5bJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJLZXl3b3Jkc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9zcGFuPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJLZXl3b3JkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXl3b3JkIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCIpIHwgaHRtbCAlXTogWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRRXhwbG9yZXI7U3ViYWN0aW9uPVNlYXJjaDtLZXl3b3JkPVslIERhdGEuS2V5d29yZCB8IHVyaSAlXSI+WyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKIyBzaG93IGZhcSBkeW5hbWljIGZpZWxkcwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlMSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlMiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdSYXRpbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSBSYXRpbmdMYWJlbCI+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9zcGFuPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXJUZXh0IiB0aXRsZT0iWyUgRGF0YS5TdGFycyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJvdXQgb2YgNSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1JhdGluZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3Vm90ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIERhdGEuVm90ZXMgfCBodG1sICVdIj5bJSBEYXRhLlZvdGVzIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgoKICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6RkFROjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNTVicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0ZBUSBpbXBvcnQgdG9vbC4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NlcGFyYXRvcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlZmluZXMgdGhlIHNlcGFyYXRvciBmb3IgZGF0YSBpbiBDU1YgZmlsZSAoZGVmYXVsdCAnOycpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdxdW90ZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlZmluZXMgdGhlIHF1b3RlIGZvciBkYXRhIGluIENTViBmaWxlIChkZWZhdWx0ICdcIicpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvdXJjZS1wYXRoJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGljaCBjb250YWluaW5nIEZBUSBpdGVtcyBmb3IgaW1wb3J0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwoKICAgICRTZWxmLT5BZGRpdGlvbmFsSGVscCgKICAgICAgICAiPHllbGxvdz5Gb3JtYXQgb2YgdGhlIENTViBmaWxlOlxuCiAgICAgICAgICAgIHRpdGxlO2NhdGVnb3J5O2xhbmd1YWdlO3N0YXRldHlwZTtmaWVsZDE7ZmllbGQyO2ZpZWxkMztmaWVsZDQ7ZmllbGQ1O2ZpZWxkNjtrZXl3b3JkcwogICAgICAgIDwveWVsbG93PlxuIgogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU291cmNlUGF0aCA9ICRTZWxmLT5HZXRBcmd1bWVudCgnc291cmNlLXBhdGgnKTsKICAgIGlmICggJFNvdXJjZVBhdGggJiYgIS1yICRTb3VyY2VQYXRoICkgewogICAgICAgIGRpZSAiRmlsZSAkU291cmNlUGF0aCBkb2VzIG5vdCBleGlzdCwgY2FuIG5vdCBiZSByZWFkLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+SW1wb3J0aW5nIEZBUSBpdGVtcy4uLjwveWVsbG93PlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8eWVsbG93PiIgLiAoICc9JyB4IDY5ICkgLiAiPC95ZWxsb3c+XG4iICk7CgogICAgbXkgJFNvdXJjZVBhdGggPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZS1wYXRoJyk7CiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UmVhZCBGaWxlICRTb3VyY2VQYXRoIDwveWVsbG93PlxuXG4iKTsKCiAgICAjIHJlYWQgc291cmNlIGZpbGUKICAgIG15ICRDU1ZTdHJpbmdSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkU291cmNlUGF0aCwKICAgICAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgICAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCiAgICApOwoKICAgIGlmICggISRDU1ZTdHJpbmdSZWYgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIkNhbid0IHJlYWQgZmlsZSAkU291cmNlUGF0aC5cbkltcG9ydCBhYm9ydGVkLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgbXkgJFNlcGFyYXRvciA9ICRTZWxmLT5HZXRPcHRpb24oJ3NlcGFyYXRvcicpIHx8ICc7JzsKICAgIG15ICRRdW90ZSAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdxdW90ZScpICAgICB8fCAnIic7CgogICAgIyByZWFkIENTViBkYXRhCiAgICBteSAkRGF0YVJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDU1YnKS0+Q1NWMkFycmF5KAogICAgICAgIFN0cmluZyAgICA9PiAkJENTVlN0cmluZ1JlZiwKICAgICAgICBTZXBhcmF0b3IgPT4gJFNlcGFyYXRvciwKICAgICAgICBRdW90ZSAgICAgPT4gJFF1b3RlLAogICAgKTsKCiAgICBpZiAoICEkRGF0YVJlZiApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3Igb2NjdXJyZWQuIEltcG9ydCBpbXBvc3NpYmxlISBTZWUgU3lzbG9nIGZvciBkZXRhaWxzLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlTGFuZ3VhZ2VJRCA9IHJldmVyc2UgJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBteSAlU3RhdGVUeXBlSUQgPSByZXZlcnNlICV7ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoIFVzZXJJRCA9PiAxICkgfTsKCiAgICAjIGdldCBncm91cCBpZCBmb3IgRkFRIGdyb3VwCiAgICBteSAkRkFRR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCA9PiAnZmFxJywKICAgICk7CgogICAgbXkgJExpbmVDb3VudGVyOwogICAgbXkgJFN1Y2Nlc3NDb3VudCAgICA9IDA7CiAgICBteSAkVW5TY3VjY2Vzc0NvdW50ID0gMDsKCiAgICBST1dSRUY6CiAgICBmb3IgbXkgJFJvd1JlZiAoIEB7JERhdGFSZWZ9ICkgewoKICAgICAgICAkTGluZUNvdW50ZXIrKzsKCiAgICAgICAgbXkgKAogICAgICAgICAgICAkVGl0bGUsICRDYXRlZ29yeVN0cmluZywgJExhbmd1YWdlLCAkU3RhdGVUeXBlLAogICAgICAgICAgICAkRmllbGQxLCAkRmllbGQyLCAkRmllbGQzLCAkRmllbGQ0LCAkRmllbGQ1LCAkRmllbGQ2LCAkS2V5d29yZHMKICAgICAgICApID0gQHskUm93UmVmfTsKCiAgICAgICAgIyBjaGVjayBsYW5ndWFnZQogICAgICAgIGlmICggISRMYW5ndWFnZUlEeyRMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gTGFuZ3VhZ2UgJyRMYW5ndWFnZScgZG9lcyBub3QgZXhpc3QuXG4iKTsKICAgICAgICAgICAgbmV4dCBST1dSRUY7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHN0YXRlIHR5cGUKICAgICAgICBpZiAoICEkU3RhdGVUeXBlSUR7JFN0YXRlVHlwZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gU3RhdGUgJyRTdGF0ZVR5cGUnIGRvZXMgbm90IGV4aXN0LlxuIik7CiAgICAgICAgICAgIG5leHQgUk9XUkVGOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc3ViY2F0ZWdvcmllcwogICAgICAgIG15IEBDYXRlZ29yeUFycmF5ID0gc3BsaXQgLzo6LywgJENhdGVnb3J5U3RyaW5nOwoKICAgICAgICAjIGNoZWNrIGVhY2ggc3ViY2F0ZWdvcnkgaWYgaXQgZXhpc3RzCiAgICAgICAgbXkgJENhdGVnb3J5SUQ7CiAgICAgICAgbXkgJFBhcmVudElEID0gMDsKCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnkgKEBDYXRlZ29yeUFycmF5KSB7CgogICAgICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgaWQKICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgJwogICAgICAgICAgICAgICAgICAgIC4gJ1dIRVJFIHZhbGlkX2lkID0gMSBBTkQgbmFtZSA9ID8gQU5EIHBhcmVudF9pZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJENhdGVnb3J5LCBcJFBhcmVudElEIF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSBAUmVzdWx0OwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgIHB1c2goIEBSZXN1bHQsICRSb3dbMF0gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXN1bHRbMF07CgogICAgICAgICAgICAjIGNyZWF0ZSBjYXRlZ29yeSBpZiBpdCBkb2VzIG5vdCBleGlzdAogICAgICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJENhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgIFBhcmVudElEID0+ICRQYXJlbnRJRCwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIG5ldyBjYXRlZ29yeSB0byBGQVEgZ3JvdXAKICAgICAgICAgICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICAgICBHcm91cElEcyAgID0+IFskRkFRR3JvdXBJRF0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgbmV3IHBhcmVudCBpZAogICAgICAgICAgICAkUGFyZW50SUQgPSAkQ2F0ZWdvcnlJRDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgY2F0ZWdvcnkKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoCiAgICAgICAgICAgICAgICAiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuIENhdGVnb3J5ICckQ2F0ZWdvcnlTdHJpbmcnIGNvdWxkIG5vdCBiZSBjcmVhdGVkLlxuIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCBTdGF0ZVR5cGUgdG8gU3RhdGUKICAgICAgICBteSAlU3RhdGVMb29rdXAgPSByZXZlcnNlICRGQVFPYmplY3QtPlN0YXRlTGlzdCggVXNlcklEID0+IDEgKTsKICAgICAgICBteSAkU3RhdGVJRDsKCiAgICAgICAgU1RBVEVOQU1FOgogICAgICAgIGZvciBteSAkU3RhdGVOYW1lICggc29ydCBrZXlzICVTdGF0ZUxvb2t1cCApIHsKICAgICAgICAgICAgaWYgKCAkU3RhdGVOYW1lID1+IG17XEEgJFN0YXRlVHlwZSB9bXN4aSApIHsKICAgICAgICAgICAgICAgICRTdGF0ZUlEID0gJFN0YXRlTG9va3VweyRTdGF0ZU5hbWV9OwogICAgICAgICAgICAgICAgbGFzdCBTVEFURU5BTUU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIHNldCBjb250ZW50IHR5cGUKICAgICAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgRkFRIGFydGljbGUKICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gJExhbmd1YWdlSUR7JExhbmd1YWdlfSwKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZpZWxkMSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZpZWxkMiwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZpZWxkMywKICAgICAgICAgICAgRmllbGQ0ICAgICAgPT4gJEZpZWxkNCwKICAgICAgICAgICAgRmllbGQ1ICAgICAgPT4gJEZpZWxkNSwKICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJEZpZWxkNiwKICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJEtleXdvcmRzIHx8ICcnLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBzdWNjZXNzCiAgICAgICAgaWYgKCRJdGVtSUQpIHsKICAgICAgICAgICAgJFN1Y2Nlc3NDb3VudCsrOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFVuU2N1Y2Nlc3NDb3VudCsrOwogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJFN1Y2Nlc3NDb3VudCkgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3NmdWxseSBpbXBvcnRlZCAkU3VjY2Vzc0NvdW50IEZBUSBpdGVtKHMpLjwvZ3JlZW4+XG4iKTsKICAgIH0KICAgIGlmICgkVW5TY3VjY2Vzc0NvdW50KSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+VW5zdWNjZXNzZnVsbHkgaW1wb3J0ZWQgJFVuU2N1Y2Nlc3NDb3VudCBGQVEgaXRlbXMocykuPC9yZWQ+XG5cbiIpOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+SW1wb3J0IGNvbXBsZXRlIHdpdGggZXJyb3JzLjwvcmVkPlxuIik7CiAgICAgICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+RmFpbDwvcmVkPlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbiIpOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8eWVsbG93PiIgLiAoICc9JyB4IDY5ICkgLiAiPC95ZWxsb3c+XG4iICk7CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6RkFROjpDb250ZW50VHlwZVNldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignU2V0cyB0aGUgY29udGVudCB0eXBlIG9mIEZBUSBpdGVtcy4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSA9PiAnZmFxLWl0ZW0taWQnLAogICAgICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgICAgICJzcGVjaWZ5IG9uZSBvciBtb3JlIGlkcyBvZiBmYXEgaXRlbXMgdG8gc2V0IGl0cyBjb250ZW50IHR5cGUgKGlmIG5vdCBzZXQsIGFsbCBGQVEgaXRlbXMgd2lsbCBiZSBhZmZlY3RlZCkuIiwKICAgICAgICBSZXF1aXJlZCAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggPT4gcXIvLiovc214LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb250ZW50LXR5cGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJ0ZXh0L3BsYWluIG9yIHRleHQvaHRtbCAoaWYgbm90IHNldCwgdGhlIGNvbnRlbnQgdHlwZSB3aWxsIGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSkuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvKD86IHRleHRcL3BsYWluIHwgdGV4dFwvaHRtbCApL3NteCwKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlNldHRpbmcgY29udGVudCB0eXBlIG9mIEZBUSBpdGVtcy4uLjwveWVsbG93PlxuIik7CgogICAgbXkgQEZBUUl0ZW1JRHMgID0gQHsgJFNlbGYtPkdldE9wdGlvbignZmFxLWl0ZW0taWQnKSAvLyBbXSB9OwogICAgbXkgJENvbnRlbnRUeXBlID0gJFNlbGYtPkdldE9wdGlvbignY29udGVudC10eXBlJykgLy8gJyc7CgogICAgbXkgJUZ1bmN0aW9uUGFyYW1zOwoKICAgIGlmIChARkFRSXRlbUlEcykgewogICAgICAgICRGdW5jdGlvblBhcmFtc3tGQVFJdGVtSURzfSA9IFxARkFRSXRlbUlEczsKICAgIH0KCiAgICBpZiAoJENvbnRlbnRUeXBlKSB7CiAgICAgICAgJEZ1bmN0aW9uUGFyYW1ze0NvbnRlbnRUeXBlfSA9ICRDb250ZW50VHlwZTsKICAgIH0KCiAgICBteSAkU3VjY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5GQVFDb250ZW50VHlwZVNldCglRnVuY3Rpb25QYXJhbXMpOwoKICAgIGlmICggISRTdWNjZXMgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkZhaWwuPC9yZWQ+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKCiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBTY2FsYXI6OlV0aWw7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEKCj1oZWFkMSBERVNDUklQVElPTgoKRkFRIG9iamVjdCBoYW5kbGVyIGZvciBEeW5hbWljRmllbGRzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEtPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQb3N0VmFsdWVTZXQoKQoKcGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYWZ0ZXIgdGhlIFZhbHVlIHNldCBmb3IgdGhpcyBvYmplY3QgdHlwZS4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRGQVFIYW5kbGVyT2JqZWN0LT5Qb3N0VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsICAgICAgIyBjb21wbGV0ZSBjb25maWcgb2YgdGhlIER5bmFtaWNGaWVsZAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgSUQgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IHRoYXQgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJlIGxpbmtlZCB0bywgZS4gZy4gRkFRSUQKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLCAgICAgICAgICAgICAgICAgICAjIFZhbHVlIHRvIHN0b3JlLCBkZXBlbmRzIG9uIGJhY2tlbmQgdHlwZQogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFBvc3RWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgT2JqZWN0SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChnZW5lcmFsKQogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZmllbGQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBEeW5hbWljRmllbGRDb25maWcgKGludGVybmFsbHkpCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgRmllbGRUeXBlIE9iamVjdFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEeW5hbWljRmllbGRDb25maWchIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgaGlzdG9yeSBpbnNlcnQKICAgICRGQVFPYmplY3QtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICJEeW5hbWljRmllbGQgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSBVcGRhdGVkIiwKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICRGQVFPYmplY3QtPl9EZWxldGVGcm9tRkFRQ2FjaGUoIEl0ZW1JRCA9PiAkUGFyYW17T2JqZWN0SUR9ICk7CgogICAgIyBUcmlnZ2VyIGV2ZW50LgogICAgJEZBUU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdGQVFEeW5hbWljRmllbGRVcGRhdGVfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBGaWVsZE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgICAgIE9sZFZhbHVlICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdERhdGFHZXQoKQoKcmV0cmlldmVzIHRoZSBkYXRhIG9mIHRoZSBjdXJyZW50IG9iamVjdC4KCiAgICBteSAlT2JqZWN0RGF0YSA9ICREeW5hbWljRmllbGRGQVFIYW5kbGVyT2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMTIzLAogICAgKTsKCnJldHVybnM6CgogICAgJU9iamVjdERhdGEgPSAoCiAgICAgICAgT2JqZWN0SUQgPT4gMTIzLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzInLAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChnZW5lcmFsKS4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGZpZWxkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBDaGVjayBEeW5hbWljRmllbGRDb25maWcgKGludGVybmFsbHkpLgogICAgZm9yIG15ICROZWVkZWQgKHF3KElEIEZpZWxkVHlwZSBPYmplY3RUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQgaW4gRHluYW1pY0ZpZWxkQ29uZmlnISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEl0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ0l0ZW1JRCcsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEl0ZW1JRDsKCiAgICBteSAlRkFRID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICElRkFRICkgewoKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBPYmplY3RJRCA9PiAkSXRlbUlELAogICAgICAgICAgICBEYXRhICAgICA9PiB7fQogICAgICAgICk7CiAgICB9CgogICAgbXkgJVJlc3VsdCA9ICgKICAgICAgICBPYmplY3RJRCA9PiAkSXRlbUlELAogICAgKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAlRkFRICkgewoKICAgICAgICAkUmVzdWx0e0RhdGF9LT57JEF0dHJpYnV0ZX0gPSAkRkFReyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIHJldHVybiAlUmVzdWx0OwoKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RkFROjpDYXRlZ29yeSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgRkFRIGNhdGVnb3J5IGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgQ2F0ZWdvcnlBZGQoKQoKYWRkIGEgY2F0ZWdvcnkKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeUEnLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLCAgICAgIyBPcHRpb25hbAogICAgICAgIFBhcmVudElEID0+IDIsICAgICAgICAgICAgICAgICAgIyBNYW5kYXRvcnksIGJ1dCBjb3VsZCBiZSAwCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SUQgPSAzNDsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIENhdGVnb3J5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQgVmFsaWRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgUGFyZW50SUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayB0aGF0IFBhcmVudElEIGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcgYnV0IG51bWJlciAwIGlzIGFsbG93ZWQKICAgIGlmICggJFBhcmFte1BhcmVudElEfSBlcSAnJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmVudElEIGNhbm5vdCBiZSBlbXB0eSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGluc2VydCByZWNvcmQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfY2F0ZWdvcnkgKG5hbWUsIHBhcmVudF9pZCwgY29tbWVudHMsIHZhbGlkX2lkLCBjcmVhdGVkLCBjcmVhdGVkX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlZCwgY2hhbmdlZF9ieSkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte0NvbW1lbnR9LCBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCBuZXcgY2F0ZWdvcnkgaWQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBuYW1lID0gPyBBTkQgcGFyZW50X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte1BhcmVudElEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAkUm93WzBdOwogICAgfQoKICAgICMgbG9nIG5vdGljZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIkZBUUNhdGVnb3J5OiAnJFBhcmFte05hbWV9JyBDYXRlZ29yeUlEOiAnJENhdGVnb3J5SUQnICIKICAgICAgICAgICAgLiAiY3JlYXRlZCBzdWNjZXNzZnVsbHkgKCRQYXJhbXtVc2VySUR9KSEiLAogICAgKTsKCiAgICByZXR1cm4gJENhdGVnb3J5SUQ7Cn0KCj1oZWFkMiBDYXRlZ29yeUNvdW50KCkKCkNvdW50IHRoZSBudW1iZXIgb2YgY2F0ZWdvcmllcy4KCiAgICBteSAkQ2F0ZWdvcnlDb3VudCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5Q291bnQoCiAgICAgICAgUGFyZW50SURzID0+IFsgMSwgMiwgMywgNCBdLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5Q291bnQgPSA2OwoKPWN1dAoKc3ViIENhdGVnb3J5Q291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEc30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFBhcmVudElEcyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgQ09VTlQoKikKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgIFdIRVJFIHZhbGlkX2lkIElOICgnCiAgICAgICAgLiBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpCiAgICAgICAgLiAnKSc7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwYXJlbnQgaWRzIGFyZSBnaXZlbgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIHBhcmVudCBpZHMKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggQHsgJFBhcmFte1BhcmVudElEc30gfSApIHsKICAgICAgICAgICAgJFBhcmVudElEID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmVudElELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1BhcmVudElEc30gfTsKCiAgICAgICAgJFNRTCAuPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBhZGQgZ3JvdXAgYnkKICAgICRTUUwgLj0gJyBHUk9VUCBCWSBwYXJlbnRfaWQnOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMjAwLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50Owp9Cgo9aGVhZDIgQ2F0ZWdvcnlEZWxldGUoKQoKRGVsZXRlIGEgY2F0ZWdvcnkuCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICBDYXRlZ29yeUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgQ2F0ZWdvcnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIHRoZSBjYXRlZ29yeQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBjYXRlZ29yeSBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnlfZ3JvdXAKICAgICAgICAgICAgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENhdGVnb3J5RHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBjYXRlZ29yeSBmb3IgZHVwbGljYXRlIG5hbWUgdW5kZXIgdGhlIHNhbWUgcGFyZW50CgogICAgbXkgJEV4aXN0cyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgUGFyZW50SUQgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRFeGlzdHMgPSAxOyAgICAgICAgICAgICAgICAjIGlmIGNhdGVnb3J5IG5hbWUgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc2FtZSBwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAgaWYgdGhlIG5hbWUgZG9lcyBub3QgZXhpc3RzIHdpdGggdGhlIHNhbWUgcGFyZW50Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlEdXBsaWNhdGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdHMKICAgICRQYXJhbXtOYW1lfSAvLz0gJyc7CiAgICAkUGFyYW17UGFyZW50SUR9IHx8PSAwOwogICAgbXkgQFZhbHVlczsKICAgIHB1c2ggQFZhbHVlcywgXCRQYXJhbXtOYW1lfTsKICAgIHB1c2ggQFZhbHVlcywgXCRQYXJhbXtQYXJlbnRJRH07CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBkYiBxdW90ZQogICAgJFBhcmFte1BhcmVudElEfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtQYXJlbnRJRH0sICdJbnRlZ2VyJyApOwoKICAgICMgYnVpbGQgU1FMCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgV0hFUkUgbmFtZSA9ID8KICAgICAgICAgICAgQU5EIHBhcmVudF9pZCA9ID8KICAgICAgICAnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAkU1FMIC49ICIgQU5EIGlkICE9ID8iOwogICAgICAgIHB1c2ggQFZhbHVlcywgXCRQYXJhbXtDYXRlZ29yeUlEfTsKCiAgICB9CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gXEBWYWx1ZXMsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEV4aXN0cyA9IDE7CiAgICB9CgogICAgcmV0dXJuICRFeGlzdHM7Cn0KCj1oZWFkMiBDYXRlZ29yeUdldCgpCgpnZXQgYSBjYXRlZ29yeSBhcyBoYXNoCgogICAgbXkgJUNhdGVnb3J5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVDYXRlZ29yeSA9ICgsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMCwKICAgICAgICBOYW1lICAgICAgID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgQ29tbWVudCAgICA9PiAnVGhpcyBpcyBteSBmaXJzdCBjYXRlZ29yeS4nLAogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDYXRlZ29yeUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdDYXRlZ29yeUdldDo6JyAuICRQYXJhbXtDYXRlZ29yeUlEfTsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAleyRDYWNoZX0gaWYgJENhY2hlOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZSwgY29tbWVudHMsIHZhbGlkX2lkCiAgICAgICAgICAgIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ29tbWVudCAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBWYWxpZElEICAgID0+ICRSb3dbNF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBDYXRlZ29yeUdyb3VwR2V0KCkKCmdldCBncm91cHMgb2YgYSBjYXRlZ29yeQoKICAgIG15ICRHcm91cEFycmF5UmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+IDMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEdyb3VwQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgICAgICA5LAogICAgICAgIDEwLAogICAgXTsKCj1jdXQKCnN1YiBDYXRlZ29yeUdyb3VwR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIG15IEBHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBHcm91cHMsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAR3JvdXBzOwp9Cgo9aGVhZDIgQ2F0ZWdvcnlHcm91cEdldEFsbCgpCgpnZXQgYWxsIGNhdGVnb3J5LWdyb3VwcwoKICAgIG15ICRBbGxDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R3JvdXBHZXRBbGwoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQWxsQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiB7CiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICAgICAgOSAgPT4gMSwKICAgICAgICAgICAgMTAgPT4gMSwKICAgICAgICB9LAogICAgICAgIDMgPT4gewogICAgICAgICAgICAyICA9PiAxLAogICAgICAgICAgICA5ICA9PiAxLAogICAgICAgICAgICAxMCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgNCA9PiB7CiAgICAgICAgICAgIDEgID0+IDEsCiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgICAgIDMgID0+IDEsCiAgICAgICAgICAgIDQgID0+IDEsCiAgICAgICAgICAgIDUgID0+IDEsCiAgICAgICAgICAgIDkgID0+IDEsCiAgICAgICAgICAgIDEwID0+IDEsCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHcm91cEdldEFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5R3JvdXBHZXRBbGx9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfTsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZCwgY2F0ZWdvcnlfaWQKICAgICAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnlfZ3JvdXAnLAogICAgKTsKCiAgICBteSAlR3JvdXBzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEdyb3Vwc3sgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9IDE7CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfSA9IFwlR3JvdXBzOwoKICAgIHJldHVybiBcJUdyb3VwczsKfQoKPWhlYWQyIENhdGVnb3J5TGlzdCgpCgpnZXQgdGhlIGNhdGVnb3J5IGxpc3QgYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlIYXNoUmVmID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgNCA9PiAnU3ViIENhdGVnb3J5IEInLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZQogICAgICAgIEZST00gZmFxX2NhdGVnb3J5JzsKICAgIGlmICgkVmFsaWQpIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgICAgICRTUUwgLj0gJyBXSEVSRSB2YWxpZF9pZCBJTiAoJwogICAgICAgICAgICAuIGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCkKICAgICAgICAgICAgLiAnKSc7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfSA9IFwlRGF0YTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYW4gYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U2VhcmNoKAogICAgICAgIE5hbWUgICAgICAgID0+ICdUZXN0JywKICAgICAgICBQYXJlbnRJRCAgICA9PiAzLAogICAgICAgIFBhcmVudElEcyAgID0+IFsgMSwgMywgOCBdLAogICAgICAgIENhdGVnb3J5SURzID0+IFsgMiwgNSwgNyBdLAogICAgICAgIE9yZGVyQnkgICAgID0+ICdOYW1lJywKICAgICAgICBTb3J0QnkgICAgICA9PiAnZG93bicsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgU1FMCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgV0hFUkUgdmFsaWRfaWQgSU4gKCcKICAgICAgICAuIGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCkKICAgICAgICAuICcpJzsKCiAgICBteSAkRXh0ID0gJyc7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzZWFyY2ggZm9yIG5hbWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgZGIgbGlrZSBxdW90ZQogICAgICAgICRQYXJhbXtOYW1lfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtOYW1lfSwgJ0xpa2UnICk7CgogICAgICAgICRFeHQgLj0gIiBBTkQgbmFtZSBMSUtFICclIiAuICRQYXJhbXtOYW1lfSAuICIlJyAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgcGFyZW50IGlkCiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKCiAgICAgICAgIyBkYiBpbnRlZ2VyIHF1b3RlCiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtQYXJlbnRJRH0sICdJbnRlZ2VyJyApOwoKICAgICAgICAkRXh0IC49ICcgQU5EIHBhcmVudF9pZCA9ICcgLiAkUGFyYW17UGFyZW50SUR9OwogICAgfQoKICAgICMgc2VhcmNoIGZvciBwYXJlbnQgaWRzCiAgICBlbHNpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17UGFyZW50SURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte1BhcmVudElEc30gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBwYXJlbnQgaWRzCiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH0gKSB7CiAgICAgICAgICAgICRQYXJlbnRJRCA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJlbnRJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3J5IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0NhdGVnb3J5SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICREQk9iamVjdC0+UXVvdGUoICRDYXRlZ29yeUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICAgICAkRXh0ID0gJyBBTkQgaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBPUkRFUiBCWQogICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gKSB7CiAgICAgICAgJEV4dCAuPSAiIE9SREVSIEJZIG5hbWUiOwoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBzb3J0IG9yZGVyCiAgICAgICAgJFBhcmFte1NvcnRCeX0gfHw9ICd1cCc7CgogICAgICAgICMgU09SVAogICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gZXEgJ3VwJyApIHsKICAgICAgICAgICAgICAgICRFeHQgLj0gIiBBU0MiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte1NvcnRCeX0gZXEgJ2Rvd24nICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAiIERFU0MiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMIFNUQVRFTUVOVAogICAgJFNRTCAuPSAkRXh0OwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gNTAwLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxATGlzdDsKfQoKPWhlYWQyIENhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoKQoKZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgb2YgYSBjYXRlZ29yeQoKICAgIG15ICRTdWJDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgIFBhcmVudElEICAgICA9PiAxLAogICAgICAgIE1vZGUgICAgICAgICA9PiAnUHVibGljJywgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0dCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3ViQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgIDMsCiAgICAgICAgNCwKICAgICAgICA1LAogICAgICAgIDYsCiAgICBdOwoKPWN1dAoKc3ViIENhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhdGVnb3JpZXMgPSB7fTsKCiAgICBpZiAoICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ0FnZW50JyApIHsKCiAgICAgICAgIyBnZXQgYWdlbnRzIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAncm8nLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzCiAgICAgICAgJENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgQFN1YkNhdGVnb3J5SURzOwogICAgbXkgQFRlbXBTdWJDYXRlZ29yeUlEcyA9IGtleXMgJXsgJENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBTVUJDQVRFR09SWUlEOgogICAgd2hpbGUgKEBUZW1wU3ViQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgbmV4dCBzdWJjYXRlZ29yeSBpZAogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gc2hpZnQgQFRlbXBTdWJDYXRlZ29yeUlEczsKCiAgICAgICAgIyBhZGQgdG8gcmVzdWx0CiAgICAgICAgcHVzaCBAU3ViQ2F0ZWdvcnlJRHMsICRTdWJDYXRlZ29yeUlEOwoKICAgICAgICAjIGNoZWNrIGlmIHN1YmNhdGVnb3J5IGhhcyBvd24gc3ViY2F0ZWdvcmllcwogICAgICAgIG5leHQgU1VCQ0FURUdPUllJRCBpZiAhJENhdGVnb3JpZXMtPnskU3ViQ2F0ZWdvcnlJRH07CgogICAgICAgICMgYWRkIG5ldyBzdWJjYXRlZ29yaWVzCiAgICAgICAgcHVzaCBAVGVtcFN1YkNhdGVnb3J5SURzLCBrZXlzICV7ICRDYXRlZ29yaWVzLT57JFN1YkNhdGVnb3J5SUR9IH07CiAgICB9CgogICAgIyBzb3J0IHN1YmNhdGVnb3JpZXMgbnVtZXJpY2FsbHkKICAgIEBTdWJDYXRlZ29yeUlEcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAU3ViQ2F0ZWdvcnlJRHM7CgogICAgcmV0dXJuIFxAU3ViQ2F0ZWdvcnlJRHM7Cn0KCj1oZWFkMiBDYXRlZ29yeVRyZWVMaXN0KCkKCmdldCBhbGwgY2F0ZWdvcmllcyBhcyB0cmVlICh3aXRoIHRoZWlyIGxvbmcgbmFtZXMpCgogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsICAjICgwfDEsIG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5VHJlZSA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEInLAogICAgfTsKCj1jdXQKCnN1YiBDYXRlZ29yeVRyZWVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0CiAgICBteSAkVmFsaWQgPSAwOwogICAgaWYgKCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0dldENhdGVnb3J5VHJlZX0tPnskVmFsaWR9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZQogICAgICAgIEZST00gZmFxX2NhdGVnb3J5JzsKCiAgICAjIGFkZCB3aGVyZSBjbGF1c2UgZm9yIHZhbGlkIGNhdGVnb3JpZXMKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICAkU1FMIC49ICcgV0hFUkUgdmFsaWRfaWQgSU4gKCcKICAgICAgICAgICAgLiBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpCiAgICAgICAgICAgIC4gJyknOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICAjIGZldGNoIHJlc3VsdAogICAgbXkgJUNhdGVnb3J5TWFwOwogICAgbXkgJUNhdGVnb3J5TmFtZUxvb2t1cDsKICAgIG15ICVQYXJlbnRJRExvb2t1cDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDYXRlZ29yeU1hcHsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICAgICAgJENhdGVnb3J5TmFtZUxvb2t1cHsgJFJvd1swXSB9ICAgICAgID0gJFJvd1syXTsKICAgICAgICAkUGFyZW50SURMb29rdXB7ICRSb3dbMF0gfSAgICAgICAgICAgPSAkUm93WzFdOwogICAgfQoKICAgICMgdG8gc3RvcmUgdGhlIGNhdGVnb3J5IHRyZWUKICAgIG15ICVDYXRlZ29yeVRyZWU7CgogICAgIyBjaGVjayBhbGwgcGFyZW50IElEcwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICVDYXRlZ29yeU1hcCApIHsKCiAgICAgICAgIyBnZXQgc3ViY2F0ZWdvcmllcyBhbmQgbmFtZXMgZm9yIHRoaXMgcGFyZW50IGlkCiAgICAgICAgd2hpbGUgKCBteSAoICRDYXRlZ29yeUlELCAkQ2F0ZWdvcnlOYW1lICkgPSBlYWNoICV7ICRDYXRlZ29yeU1hcHskUGFyZW50SUR9IH0gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgcGFyZW50cyBuYW1lCiAgICAgICAgICAgIG15ICROZXdQYXJlbnRJRCA9ICRQYXJlbnRJRDsKICAgICAgICAgICAgd2hpbGUgKCROZXdQYXJlbnRJRCkgewoKICAgICAgICAgICAgICAgICMgcHJlLWFwcGVuZCBwYXJlbnRzIGNhdGVnb3J5IG5hbWUKICAgICAgICAgICAgICAgIGlmICggJENhdGVnb3J5TmFtZUxvb2t1cHskTmV3UGFyZW50SUR9ICkgewogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeU5hbWUgPSAkQ2F0ZWdvcnlOYW1lTG9va3VweyROZXdQYXJlbnRJRH0gLiAnOjonIC4gJENhdGVnb3J5TmFtZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB1cCBvbmUgcGFyZW50IGxldmVsCiAgICAgICAgICAgICAgICAkTmV3UGFyZW50SUQgPSAkUGFyZW50SURMb29rdXB7JE5ld1BhcmVudElEfSB8fCAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBjYXRlZ29yeSB0byB0cmVlCiAgICAgICAgICAgICRDYXRlZ29yeVRyZWV7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5TmFtZTsKICAgICAgICB9CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfSA9IFwlQ2F0ZWdvcnlUcmVlOwoKICAgIHJldHVybiBcJUNhdGVnb3J5VHJlZTsKfQoKPWhlYWQyIENhdGVnb3J5VXBkYXRlKCkKCnVwZGF0ZSBhIGNhdGVnb3J5CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgICAgICBDYXRlZ29yeUlEID0+IDIsCiAgICAgICAgUGFyZW50SUQgICA9PiAxLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgQ2F0ZWdvcnknLAogICAgICAgIENvbW1lbnQgICAgPT4gJ3NvbWUgY29tbWVudCcsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSB1cGRhdGVkCgo9Y3V0CgpzdWIgQ2F0ZWdvcnlVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgUGFyZW50SUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgdGhhdCBQYXJlbnRJRCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nIGJ1dCBudW1iZXIgMCBpcyBhbGxvd2VkCiAgICBpZiAoICRQYXJhbXtQYXJlbnRJRH0gZXEgJycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJlbnRJRCBjYW5ub3QgYmUgZW1wdHkhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX2NhdGVnb3J5CiAgICAgICAgICAgIFNFVCBwYXJlbnRfaWQgPSA/LCBuYW1lID0gPywgY29tbWVudHMgPSA/LCB2YWxpZF9pZCA9ID8sIGNoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZWRfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte05hbWV9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LCAgXCRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBsb2cgbm90aWNlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICBNZXNzYWdlICA9PiAiRkFRQ2F0ZWdvcnk6ICckUGFyYW17TmFtZX0nICIKICAgICAgICAgICAgLiAiSUQ6ICckUGFyYW17Q2F0ZWdvcnlJRH0nIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5ICgkUGFyYW17VXNlcklEfSkhIiwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGNhY2hlLCBhcyBGQVFHZXQoKSB3aWxsIGJlIGFsc28gYWZmZWN0ZWQuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEFnZW50Q2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgICAgICA9PiAzLCAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBHZXRTdWJDYXRlZ29yaWVzID0+IDEsICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQWdlbnRDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBwYXJlbnQgaWQKICAgIG15ICRQYXJlbnRJRCA9ICRQYXJhbXtQYXJlbnRJRH0gPyAkUGFyYW17UGFyZW50SUR9IDogMDsKCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENhdGVnb3JpZXMpOwoKICAgIG15ICVDYXRlZ29yeSAgICA9ICV7ICRDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlJRHMgaWYgISRQYXJhbXtHZXRTdWJDYXRlZ29yaWVzfTsKCiAgICAjIENoZWNrIGlmIHNvbWUgSURzIGhhdmUgYSBzdWJjYXRlZ29yeSBhbmQgYWRkIHRoaXMgYWxzbyB0byB0aGUgbGlzdC4KICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgZm9yIHRoaXMgY2F0ZWdvcnkKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBzdWIgY2F0ZWdvcmllcyB0byB0aGUgY2F0ZWdvcnkgaWRzLgogICAgICAgIHB1c2ggQENhdGVnb3J5SURzLCBAeyRTdWJDYXRlZ29yeUlEc307CiAgICB9CgogICAgIyBSZW1vdmUgYW55IGR1cGxpY2F0ZSBJRHMgZnJvbSB0aGUgbGVzdAogICAgbXkgJVNlZW47CiAgICBAQ2F0ZWdvcnlJRHMgPSBncmVwIHsgISRTZWVueyRffSsrIH0gQENhdGVnb3J5SURzOwoKICAgIHJldHVybiBcQENhdGVnb3J5SURzOwp9Cgo9aGVhZDIgQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBoYXNoCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9IEB7JEZBUU9iamVjdC0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICBDdXN0b21lclVzZXIgID0+ICd0dCcsCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLCAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBNb2RlICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKX07CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBNb2RlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICBteSAkUGFyZW50SUQgPSAkUGFyYW17UGFyZW50SUR9ID8gJFBhcmFte1BhcmVudElEfSA6IDA7CgogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVDYXRlZ29yeSAgICA9ICV7ICRDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEczsKICAgIG15ICVBcnRpY2xlczsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaDo6QXJ0aWNsZXMnOwogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gKSB7CiAgICAgICAgJUFydGljbGVzID0gJXsgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgICAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICAgICBteSAkU1FMID0gIgogICAgICAgICAgICBTRUxFQ1QgZmFxX2l0ZW0uaWQsIGZhcV9pdGVtLmNhdGVnb3J5X2lkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX3N0YXRlLmlkID0gZmFxX2l0ZW0uc3RhdGVfaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlX3R5cGUubmFtZSAhPSAnaW50ZXJuYWwnCiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAkU1FMLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRBcnRpY2xlc3sgJFJvd1sxXSB9Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNhY2hlCiAgICAgICAgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ID0gXCVBcnRpY2xlczsKICAgIH0KCiAgICByZXR1cm4gXEBDYXRlZ29yeUlEcyBpZiAhJFBhcmFte0dldFN1YkNhdGVnb3JpZXN9OwoKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgZm9yIHRoaXMgY2F0ZWdvcnkKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBNb2RlICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGlzIGNhdGVnb3J5IGlkCiAgICAgICAgbXkgQElEcyA9ICggJENhdGVnb3J5SUQsIEB7JFN1YkNhdGVnb3J5SURzfSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNhdGVnb3J5IGNvbnRhaW5zIGFydGljbGVzIHdpdGggc3RhdGUgZXh0ZXJuYWwgb3IgcHVibGljCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICBuZXh0IElEIGlmICEkQXJ0aWNsZXN7JElEfTsKICAgICAgICAgICAgcHVzaCBAQWxsb3dlZENhdGVnb3J5SURzLCAkSUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKfQoKPWhlYWQyIFB1YmxpY0NhdGVnb3J5U2VhcmNoKCkKCmdldCB0aGUgY2F0ZWdvcnkgc2VhcmNoIGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgTW9kZSAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgICc0JywKICAgICAgICAnOCcsCiAgICBdOwoKPWN1dAoKc3ViIFB1YmxpY0NhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTW9kZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CgogICAgbXkgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH07CgogICAgbXkgJUNhdGVnb3J5ICAgID0gJXsgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBteSBAQ2F0ZWdvcnlJRHMgPSBzb3J0IHsgJENhdGVnb3J5eyRhfSBjbXAgJENhdGVnb3J5eyRifSB9ICgga2V5cyAlQ2F0ZWdvcnkgKTsKICAgIG15IEBBbGxvd2VkQ2F0ZWdvcnlJRHM7CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBmb3IgdGhpcyBjYXRlZ29yeQogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEcyA9ICRTZWxmLT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoaXMgY2F0ZWdvcnkgaWQKICAgICAgICBteSBASURzID0gKCAkQ2F0ZWdvcnlJRCwgQHskU3ViQ2F0ZWdvcnlJRHN9ICk7CgogICAgICAgICMgY2hlY2sgaWYgY2F0ZWdvcnkgY29udGFpbnMgYXJ0aWNsZXMgd2l0aCBzdGF0ZSBwdWJsaWMKICAgICAgICBteSAkRm91bmRBcnRpY2xlID0gMDsKCiAgICAgICAgbXkgJFNRTCA9ICIKICAgICAgICAgICAgU0VMRUNUIGZhcV9pdGVtLmlkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX2l0ZW0uY2F0ZWdvcnlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUuaWQgPSBmYXFfaXRlbS5zdGF0ZV9pZAogICAgICAgICAgICAgICAgQU5EIGZhcV9zdGF0ZS50eXBlX2lkID0gZmFxX3N0YXRlX3R5cGUuaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ3B1YmxpYycKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CgogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgICAgICBCaW5kICA9PiBbIFwkSUQgXSwKICAgICAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJEZvdW5kQXJ0aWNsZSA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBJRCBpZiAkRm91bmRBcnRpY2xlOwogICAgICAgIH0KCiAgICAgICAgIyBhbiBhcnRpY2xlIHdhcyBmb3VuZAogICAgICAgIGlmICgkRm91bmRBcnRpY2xlKSB7CiAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDYXRlZ29yeUlEcywgJENhdGVnb3J5SUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKCn0KCj1oZWFkMiBHZXRVc2VyQ2F0ZWdvcmllcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4ge30sCiAgICAgICAgMCA9PiB7CiAgICAgICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMyA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICA0ID0+ICdTdWIgQ2F0ZWdvcnkgQicsCiAgICAgICAgfSwKICAgICAgICAzID0+IHt9LAogICAgICAgIDQgPT4ge30sCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcnlHcm91cHMgPSAkU2VsZi0+Q2F0ZWdvcnlHcm91cEdldEFsbCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVVc2VyR3JvdXBzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAkVXNlckNhdGVnb3JpZXMgPSAkU2VsZi0+X1VzZXJDYXRlZ29yaWVzKAogICAgICAgIENhdGVnb3JpZXMgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwcywKICAgICAgICBVc2VyR3JvdXBzICAgICA9PiBcJVVzZXJHcm91cHMsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkVXNlckNhdGVnb3JpZXM7Cn0KCj1oZWFkMiBHZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJXsgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlVXNlckNhdGVnb3JpZXNMb25nTmFtZXM7Cn0KCj1oZWFkMiBHZXRDdXN0b21lckNhdGVnb3JpZXMoKQoKZ2V0IGN1c3RvbWVyIHVzZXIgY2F0ZWdvcmllcwoKICAgIG15ICRDdXN0b21lclVzZXJDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdoYW5zJywKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDdXN0b21lclVzZXJDYXRlZ29yeUhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiB7fSwKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIDQgPT4gJ1N1YiBDYXRlZ29yeSBCJywKICAgICAgICB9LAogICAgICAgIDMgPT4ge30sCiAgICAgICAgNCA9PiB7fSwKICAgIH07Cgo9Y3V0CgpzdWIgR2V0Q3VzdG9tZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0dldEN1c3RvbWVyQ2F0ZWdvcmllczo6Q3VzdG9tZXJVc2VyOjonIC4gJFBhcmFte0N1c3RvbWVyVXNlcn07CiAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX07CiAgICB9CgogICAgIyBnZXQgYWxsIHZhbGlkIGNhdGVnb3JpZXMKICAgIG15ICRDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUdyb3VwcyA9ICRTZWxmLT5DYXRlZ29yeUdyb3VwR2V0QWxsKAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVVzZXJHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICApOwoKICAgIG15ICRDdXN0b21lckNhdGVnb3JpZXMgPSAkU2VsZi0+X1VzZXJDYXRlZ29yaWVzKAogICAgICAgIENhdGVnb3JpZXMgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwcywKICAgICAgICBVc2VyR3JvdXBzICAgICA9PiBcJVVzZXJHcm91cHMsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSA9ICRDdXN0b21lckNhdGVnb3JpZXM7CgogICAgcmV0dXJuICRDdXN0b21lckNhdGVnb3JpZXM7Cn0KCj1oZWFkMiBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoKQoKZ2V0IGN1c3RvbWVyIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRDdXN0b21lckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnaGFucycsCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ3VzdG9tZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgfTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXIgVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgIFR5cGUgICAgICAgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGV4dHJhY3QgY2F0ZWdvcnkgaWRzCiAgICBteSAlQWxsQ2F0ZWdvcnlJRHM7CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgY3VzdG9tZXIgY2F0ZWdvcnkgaWRzCiAgICBteSBAQ3VzdG9tZXJDYXRlZ29yeUlEczsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIDAsIGtleXMgJUFsbENhdGVnb3J5SURzICkgewogICAgICAgIHB1c2ggQEN1c3RvbWVyQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICkKICAgICAgICB9OwogICAgfQoKICAgICMgYnVpbGQgY3VzdG9tZXIgY2F0ZWdvcnkgaGFzaAogICAgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9IHt9OwogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ3VzdG9tZXJDYXRlZ29yeUlEcykgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRDdXN0b21lckNhdGVnb3JpZXMtPnsgJENhdGVnb3J5e1BhcmVudElEfSB9LT57ICRDYXRlZ29yeXtDYXRlZ29yeUlEfSB9ID0gJENhdGVnb3J5e05hbWV9OwogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgdXNlciBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJUN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmIHJlZiAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJXsgJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzOwp9Cgo9aGVhZDIgR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgcHVibGljIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRQdWJsaWNDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkUHVibGljQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgIH07Cgo9Y3V0CgpzdWIgR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMKICAgIG15ICRQdWJsaWNDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCggVXNlcklEID0+ICRQYXJhbXtVc2VySUR9ICk7CgogICAgIyBleHRyYWN0IGNhdGVnb3J5IGlkcwogICAgbXkgJUFsbENhdGVnb3J5SURzOwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRQdWJsaWNDYXRlZ29yaWVzfSApIHsKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgcHVibGljIGNhdGVnb3J5IGlkcwogICAgbXkgQFB1YmxpY0NhdGVnb3J5SURzOwogICAgZm9yIG15ICRDYXRlZ29yeUlEICggMCwga2V5cyAlQWxsQ2F0ZWdvcnlJRHMgKSB7CiAgICAgICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5QdWJsaWNDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgTW9kZSAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKQogICAgICAgIH07CiAgICB9CgogICAgIyBidWlsZCBwdWJsaWMgY2F0ZWdvcnkgaGFzaAogICAgJFB1YmxpY0NhdGVnb3JpZXMgPSB7fTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQFB1YmxpY0NhdGVnb3J5SURzKSB7CiAgICAgICAgbXkgJUNhdGVnb3J5ID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFB1YmxpY0NhdGVnb3JpZXMtPnsgJENhdGVnb3J5e1BhcmVudElEfSB9LT57ICRDYXRlZ29yeXtDYXRlZ29yeUlEfSB9ID0gJENhdGVnb3J5e05hbWV9OwogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgdXNlciBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJVB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskUHVibGljQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmIHJlZiAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISV7ICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzeyRDYXRlZ29yeUlEfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJVB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXM7Cn0KCj1oZWFkMiBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKQoKZ2V0IHVzZXIgcGVybWlzc2lvbiBmb3IgYSBjYXRlZ29yeQoKICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIENhdGVnb3J5SUQgPT4gJzEyMycsCiAgICAgICAgVHlwZSAgICAgICA9PiAncncnLCAgICAgIyAob3B0aW9uYWwpIHJ3IG9yIHJvLCBkZWZhdWx0IHJvCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFBlcm1pc3Npb25TdHJpbmcgPSAncncnOyAgICAgICAgICAgICAgICMgb3IgJ3JvJyBvciAnJwoKPWN1dAoKc3ViIENoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1R5cGV9ICkgewogICAgICAgICRQYXJhbXtUeXBlfSA9ICdybyc7CiAgICB9CgogICAgJFBhcmFte1R5cGV9ID0gbGMgJFBhcmFte1R5cGV9OwoKICAgIGlmICggJFBhcmFte1R5cGV9IG5lICdydycgJiYgJFBhcmFte1R5cGV9IG5lICdybycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUeXBlIGlzIGludmFsaWQhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgbXkgJENhdGVnb3JpZXMgPSAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyRDYXRlZ29yaWVzfSApIHsKICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlJRCA9PSAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICRQYXJhbXtUeXBlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1oZWFkMiBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKCkKCmdldCBjdXN0b21lciB1c2VyIHBlcm1pc3Npb24gZm9yIGEgY2F0ZWdvcnkKCiAgICBteSAkUGVybWlzc2lvblN0cmluZyAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnbW0nLAogICAgICAgIENhdGVnb3J5SUQgICA9PiAnMTIzJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQZXJtaXNzaW9uU3RyaW5nID0gJ3J3JzsgICAgICAgICAgICAgICAjIG9yICdybycgb3IgJycKCj1jdXQKCnN1YiBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIENhdGVnb3J5SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhydyBybykpIHsKICAgICAgICBteSAkQ3VzdG9tZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewogICAgICAgICAgICBteSAkQ2F0ZWdvcmllcyA9ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXskQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDYXRlZ29yeUlEID09ICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRQZXJtaXNzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWhlYWQyIFNldENhdGVnb3J5R3JvdXAoKQoKc2V0IGdyb3VwcyB0byBhIGNhdGVnb3J5CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgIENhdGVnb3J5SUQgPT4gMywKICAgICAgICBHcm91cElEcyAgID0+IFsgMiw0LDEsNSw3NyBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGdyb3VwcyBjb3VsZCBub3QgYmUgc2V0IHRvIGEgY2F0ZWdvcnkKCj1jdXQKCnN1YiBTZXRDYXRlZ29yeUdyb3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBHcm91cElEcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGRlbGV0ZSBvbGQgZ3JvdXBzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwCiAgICAgICAgICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgZ3JvdXBzCiAgICAkUGFyYW17Q2F0ZWdvcnlJRH0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Q2F0ZWdvcnlJRH0sICdJbnRlZ2VyJyApOwogICAgZm9yIG15ICRHcm91cElEICggQHsgJFBhcmFte0dyb3VwSURzfSB9ICkgewoKICAgICAgICAjIGRiIHF1b3RlCiAgICAgICAgJEdyb3VwSUQgPSAkREJPYmplY3QtPlF1b3RlKCAkR3JvdXBJRCwgJ0ludGVnZXInICk7CgogICAgICAgIG15ICRTUUwgPSAiCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9jYXRlZ29yeV9ncm91cCAoY2F0ZWdvcnlfaWQsIGdyb3VwX2lkLCBjaGFuZ2VkLCBjaGFuZ2VkX2J5LCBjcmVhdGVkLAogICAgICAgICAgICAgICAgY3JlYXRlZF9ieSkKICAgICAgICAgICAgVkFMVUVTICgkUGFyYW17Q2F0ZWdvcnlJRH0sICRHcm91cElELCBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0pIjsKCiAgICAgICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKCBTUUwgPT4gJFNRTCApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgUFJJVkFURSBGVU5DVElPTlMKCj1oZWFkMiBfVXNlckNhdGVnb3JpZXMoKQoKcmVkdWNlcyB0aGUgY2F0ZWdvcmllcyAoIGZyb20gQ2F0ZWdvcnlMaXN0KCkgKSB0byBvbmx5IHRoZSBvbmVzIHdoZXJlIHRoZSB1c2VyIGhhcyBwcml2aWxlZ2VzLgoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcnlIYXNoUmVmLCAgICAgICAgICMgYXMgcmV0dXJuZWQgZm9ybSBDYXRlZ29yeUxpc3QoKQogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwSGFzaFJlZiwgICAgICMgYXMgcmV0dXJuZWQgZnJvbSBDYXRlZ29yeUdyb3VwR2V0QWxsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gJFVzZXJHcm91cHNIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgICRVc2VyQ2F0ZWdvaWVzID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBfVXNlckNhdGVnb3JpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yaWVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVVc2VyQ2F0ZWdvcmllczsKCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkUGFyYW17Q2F0ZWdvcmllc30gfSApIHsKCiAgICAgICAgbXkgJVN1YkNhdGVnb3JpZXM7CgogICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0gfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgY2F0ZWdvcnkgZ3JvdXBzCiAgICAgICAgICAgIG5leHQgQ0FURUdPUllJRCBpZiAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlHcm91cHN9LT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBjaGVjayB1c2VyIGdyb3VwcwogICAgICAgICAgICBHUk9VUElEOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0NhdGVnb3J5R3JvdXBzfS0+eyRDYXRlZ29yeUlEfSB9ICkgewoKICAgICAgICAgICAgICAgIG5leHQgR1JPVVBJRCBpZiAhZGVmaW5lZCAkUGFyYW17VXNlckdyb3Vwc30tPnskR3JvdXBJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICRTdWJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSA9ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0tPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgZW1wdHkgaGFzaCBpZiBjYXRlZ29yeSBoYXMgbm8gc3ViY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgaWYgKCAhJFVzZXJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNhdGVnb3JpZXN7JENhdGVnb3J5SUR9ID0ge307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdCBHUk9VUElEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkVXNlckNhdGVnb3JpZXN7JFBhcmVudElEfSA9IFwlU3ViQ2F0ZWdvcmllczsKICAgIH0KCiAgICByZXR1cm4gXCVVc2VyQ2F0ZWdvcmllczsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgbGFuZ3VhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBMYW5ndWFnZUFkZCgpCgphZGQgYSBsYW5ndWFnZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgTmFtZSAgID0+ICdTb21lIExhbmd1YWdlJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGxhbmd1YWdlIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIExhbmd1YWdlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfbGFuZ3VhZ2UgKG5hbWUpCiAgICAgICAgICAgIFZBTFVFUyAoPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgTGFuZ3VhZ2VEZWxldGUoKQoKRGVsZXRlIGEgbGFuZ3VhZ2UuCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZURlbGV0ZSgKICAgICAgICBMYW5ndWFnZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnMKCiAgICAkRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXR0cmlidXRlIChxdyhMYW5ndWFnZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgdGhlIGxhbmd1YWdlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExhbmd1YWdlRHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBsYW5ndWFnZQoKICAgIG15ICRFeGlzdHMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLCAgICAgICAgIyBmb3IgdXBkYXRlCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMsIG9yIDAgaWYgZG9lcyBub3QgZXhpc3QKCj1jdXQKCnN1YiBMYW5ndWFnZUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgQEJpbmQgPSAoIFwkUGFyYW17TmFtZX0gKTsKICAgIG15ICRTUUwgID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgV0hFUkUgbmFtZSA9ID8nOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtMYW5ndWFnZUlEfSApIHsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte0xhbmd1YWdlSUR9OwogICAgICAgICRTUUwgLj0gIiBBTkQgaWQgIT0gPyI7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICBCaW5kICA9PiBcQEJpbmQsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEV4aXN0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRFeGlzdHMgPSAxOwogICAgfQoKICAgIHJldHVybiAkRXhpc3RzOwp9Cgo9aGVhZDIgTGFuZ3VhZ2VHZXQoKQoKZ2V0IGEgbGFuZ3VhZ2UgZGV0YWlscyBhcyBhIGhhc2gKCiAgICBteSAlTGFuZ3VhZ2UgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUdldCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUxhbmd1YWdlID0gKAogICAgICAgIExhbmd1YWdlSUQgPT4gJzEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ2VuJywKICAgICk7Cgo9Y3V0CgpzdWIgTGFuZ3VhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMYW5ndWFnZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICAgICAgRlJPTSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvd1sxXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIExhbmd1YWdlTGlzdCgpCgpnZXQgdGhlIGxhbmd1YWdlIGxpc3QgYXMgYSBoYXNoCgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVMYW5ndWFnZXMgPSAoCiAgICAgICAgMSA9PiAnZW4nLAogICAgICAgIDIgPT4gJ2RlJywKICAgICAgICAzID0+ICdlcycsCiAgICApOwoKPWN1dAoKc3ViIExhbmd1YWdlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBidWlsZCBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZScsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTGlzdHsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gJUxpc3Q7Cn0KCj1oZWFkMiBMYW5ndWFnZUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIEZBUSBsYW5ndWFnZS4KSWYgYSBsYW5ndWFnZSBpZCBpcyBnaXZlbiwgaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UuCklmIHRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBpcyBnaXZlbiwgdGhlIGxhbmd1YWdlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICApOwoKICAgIG15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgTmFtZSA9PiAnZW4nLAogICAgKTsKClJldHVybnM6CgogICAgJExhbmd1YWdlTmFtZSA9ICdlbic7CgogICAgJExhbmd1YWdlSUQgPSAxOwoKPWN1dAoKc3ViIExhbmd1YWdlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vdCBib3RoIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgYm90aCBwYXJhbWV0ZXJzIGFyZSBub3QgZ2l2ZW4KICAgIGlmICggISRQYXJhbXtMYW5ndWFnZUlEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBMYW5ndWFnZUlEIG9yIE5hbWUgLSBub25lIGlzIGdpdmVuIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgTGFuZ3VhZ2VJRCBpcyBhIG51bWJlcgogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJFBhcmFte0xhbmd1YWdlSUR9ICF+IG17IFxBIFxkKyBceiB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTGFuZ3VhZ2VJRCBtdXN0IGJlIGEgbnVtYmVyISAoTGFuZ3VhZ2VJRDogJFBhcmFte0xhbmd1YWdlSUR9KSIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwgc3RhdGVtZW50cwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gKSB7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIG5hbWUKICAgICAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJExvb2t1cDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRMb29rdXAgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkTG9va3VwOwp9Cgo9aGVhZDIgTGFuZ3VhZ2VVcGRhdGUoKQoKdXBkYXRlIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlVXBkYXRlKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdkZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExhbmd1YWdlSUQgTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGJ1aWxkIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgU0VUIG5hbWUgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGNhY2hlLCBhcyBGQVFHZXQoKSB3aWxsIGJlIGFsc28gYWZmZWN0ZWQuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCByZWxhdGVkIGZhcSBhcnRpY2xlIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QoKQoKR2V0IHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGxpc3QgZm9yIHRoZSBnaXZlbiBzdWJqZWN0IGFuZCBib2R5LgoKICAgIG15IEBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPlJlbGF0ZWRBZ2VudEFydGljbGVMaXN0KAogICAgICAgIFN1YmplY3QgICA9PiAnVGl0bGUgRXhhbXBsZScsCiAgICAgICAgQm9keSAgICAgID0+ICdUZXh0IEV4YW1wbGUnLCAgIyBwb3NzaWJsZSB3aXRoIGh0bWwgdGFncyAod2lsbCBiZSByZW1vdmVkIGZvciB0aGUgc2VhcmNoKQogICAgICAgIExhbmd1YWdlcyA9PlsgJ2VuJyBdLCAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBMaW1pdCAgICAgPT4gMTAsICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJucwoKICAgIG15IEBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fUmVsYXRlZEFydGljbGVMaXN0KCVQYXJhbSk7Cn0KCj1oZWFkMiBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCgpCgpHZXQgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGUgbGlzdCBmb3IgdGhlIGdpdmVuIHN1YmplY3QgYW5kIGJvZHkuCgogICAgbXkgQFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+UmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QoCiAgICAgICAgU3ViamVjdCAgID0+ICdUaXRsZSBFeGFtcGxlJywKICAgICAgICBCb2R5ICAgICAgPT4gJ1RleHQgRXhhbXBsZScsICAjIHBvc3NpYmxlIHdpdGggaHRtbCB0YWdzICh3aWxsIGJlIHJlbW92ZWQgZm9yIHRoZSBzZWFyY2gpCiAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsICAgICAgIyBvcHRpb25hbAogICAgICAgIExhbmd1YWdlcyA9PiBbICdlbicgXSwgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBMaW1pdCAgICAgPT4gMTAsICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJucwoKICAgIG15IEBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fUmVsYXRlZEFydGljbGVMaXN0KAogICAgICAgICVQYXJhbSwKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwp9CgojIEZBUSBTZXJ2aWNlCj1oZWFkMiBSZWxhdGVkQ3VzdG9tZXJTZXJ2aWNlQXJ0aWNsZUxpc3QoKQoKR2V0IHRoZSBzZXJ2aWNlIHJlbGF0ZWQgZmFxIGFydGljbGUgbGlzdCBmb3IgdGhlIGdpdmVuIHN1YmplY3QgYW5kIGJvZHkuCgogICAgbXkgQFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+UmVsYXRlZEN1c3RvbWVyU2VydmljZUFydGljbGVMaXN0KAogICAgICAgIExhbmd1YWdlcyA9PlsgJ2VuJyBdLCAgICAgICAgICMgb3B0aW9uYWwgIyBUT0RPCiAgICAgICAgTGltaXQgICAgID0+IDEwLCAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgIFNlcnZpY2VJRCA9PiAxLAogICAgKTsKClJldHVybnMKCiAgICBteSBAUmVsYXRlZEN1c3RvbWVyU2VydmljZUFydGljbGVMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ0ZBUSBUaXRsZScsCiAgICAgICAgICAgIENhdGVnb3J5TmFtZSA9PiAnTWlzYycsCiAgICAgICAgICAgIENyZWF0ZWQgICAgICA9PiAnMjAxNC0xMC0xMCAxMDoxMDowMCcsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgUmVsYXRlZEN1c3RvbWVyU2VydmljZUFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFNlcnZpY2VJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRGQVFTZXJ2aWNlQXJ0aWNsZXMgPSAkU2VsZi0+RkFRU2VydmljZUFydGljbGVzR2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBMaW1pdCAgICAgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgbXkgJUxvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlczsKCiAgICBmb3IgbXkgJEZBUUFydGljbGVJRCAoIEB7JEZBUVNlcnZpY2VBcnRpY2xlc30gKSB7CgogICAgICAgIG15ICVGQVFBcnRpY2xlRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRQXJ0aWNsZUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAjICRGQVFBcnRpY2xlRGF0YXtWb3Rlc30KICAgICAgICAkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzeyRGQVFBcnRpY2xlSUR9ID0gewogICAgICAgICAgICAlRkFRQXJ0aWNsZURhdGEsCiAgICAgICAgfTsKCiAgICB9CgogICAgIyBUbyBzYXZlIHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGZyb20gdGhlIGxvb2t1cCBoYXNoLgogICAgbXkgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCA9IG1hcCB7ICRMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXN7JF99IH0gc29ydCBrZXlzICVMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXM7CgogICAgcmV0dXJuIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7Cn0KCiMgZW8gRkFRIFNlcnZpY2UKCj1oZWFkMSBQUklWQVRFIEZVTkNUSU9OUwoKPWhlYWQyIF9SZWxhdGVkQXJ0aWNsZUxpc3QoKQoKR2V0IHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGxpc3QgZm9yIHRoZSBnaXZlbiBzdWJqZWN0IGFuZCBib2R5LgoKICAgIG15IEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAkRkFRT2JqZWN0LT5fUmVsYXRlZEFydGljbGVMaXN0KAogICAgICAgIFN1YmplY3QgICAgICA9PiAnVGl0bGUgRXhhbXBsZScsCiAgICAgICAgQm9keSAgICAgICAgID0+ICdUZXh0IEV4YW1wbGUnLCAgIyBwb3NzaWJsZSB3aXRoIGh0bWwgdGFncyAod2lsbCBiZSByZW1vdmVkIGZvciB0aGUgc2VhcmNoKQogICAgICAgIFNlcnZpY2VJRCAgICA9PiAkU2VydmljZUlELCAgICAgICMgb3B0aW9uYWwKICAgICAgICBMYW5ndWFnZXMgICAgPT5bICdlbicgXSwgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgTGltaXQgICAgICAgID0+IDEwLCAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnam9lJyAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgbXkgQFJlbGF0ZWRBcnRpY2xlTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIF9SZWxhdGVkQXJ0aWNsZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQENvbnRlbnQ7CgogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhTdWJqZWN0IEJvZHkpKSB7CgogICAgICAgICMgR2V0IEFTQ0lJIGNvbnRlbnQgZm9ybSB0aGUgZ2l2ZW4gYm9keSwgdG8gaGF2ZSBubyBodG1sIHRhZ3MgZm9yIHRoZSBjaGVjay4KICAgICAgICBpZiAoICRGaWVsZCBlcSAnQm9keScgKSB7CiAgICAgICAgICAgICRQYXJhbXskRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXskRmllbGR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFBhcmFteyRGaWVsZH07CgogICAgICAgIHB1c2ggQENvbnRlbnQsICRQYXJhbXskRmllbGR9OwogICAgfQoKICAgIHJldHVybiBpZiAhQENvbnRlbnQ7CgogICAgIyBUbyBzYXZlIHRoZSBrZXl3b3JkcyBhbmQgdGhlIGNvdW50ZXIgZm9yIHRoZSBkaWZmZXJlbnQga2V5d29yZHMuCiAgICBteSAlQ29udGVudEtleXdvcmRzID0gJFNlbGYtPl9CdWlsZEtleXdvcmRDb3VudGVyRnJvbUNvbnRlbnQoCiAgICAgICAgQ29udGVudCA9PiBcQENvbnRlbnQKICAgICk7CgogICAgcmV0dXJuIGlmICElQ29udGVudEtleXdvcmRzOwoKICAgICMgR2V0IHRoZSBrZXl3b3JkIGFydGljbGUgbGlzdCBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlcy4KICAgIG15ICVGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPSAkU2VsZi0+RkFRS2V5d29yZEFydGljbGVMaXN0KCVQYXJhbSk7CgogICAgcmV0dXJuIGlmICElRkFRS2V5d29yZEFydGljbGVMaXN0OwoKICAgIHJldHVybiAkU2VsZi0+X0J1aWxkUmVsYXRlZEZBUUFydGljbGVMaXN0KAogICAgICAgIENvbnRlbnRLZXl3b3JkcyAgICA9PiBcJUNvbnRlbnRLZXl3b3JkcywKICAgICAgICBLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gXCVGQVFLZXl3b3JkQXJ0aWNsZUxpc3QsCiAgICAgICAgTGltaXQgICAgICAgICAgICAgID0+ICRQYXJhbXtMaW1pdH0sCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKfQoKPWhlYWQyIF9CdWlsZFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCgpCgpCdWlsZCB0aGUgcmVsYXRlZCBmYXEgYXJ0aWNsZSBsaXN0IGZyb20gdGhlIGdpdmVuIGNvbnRlbnQga2V5d29yZHMgYW5kIGFydGljbGUga2V5d29yZCByZWxhdGlvbi4KCiAgICBteSBAUmVsYXRlZEFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+X0J1aWxkUmVsYXRlZEZBUUFydGljbGVMaXN0KAogICAgICAgIENvbnRlbnRLZXl3b3JkcyA9PiB7CiAgICAgICAgICAgIGV4YW1wbGUgPT4gMSwKICAgICAgICAgICAgdGVzdCAgICA9PiAzLAogICAgICAgICAgICBmYXEgICAgID0+IDYsCiAgICAgICAgfSwKICAgICAgICBLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICAnRXhhbXBsZUtleXdvcmQnID0+IFsKICAgICAgICAgICAgICAgIDEyLAogICAgICAgICAgICAgICAgMTMsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdUZXN0S2V5d29yZCcgPT4gWwogICAgICAgICAgICAgICAgODc2LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgTGltaXQgID0+IDEwLCAjIG9wdGlvbmFsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJucwoKICAgIG15IEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ0ZBUSBUaXRsZScsCiAgICAgICAgICAgIENhdGVnb3J5TmFtZSA9PiAnTWlzYycsCiAgICAgICAgICAgIENyZWF0ZWQgICAgICA9PiAnMjAxNC0xMC0xMCAxMDoxMDowMCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBfQnVpbGRSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbnRlbnRLZXl3b3Jkc30gKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtLZXl3b3JkQXJ0aWNsZUxpc3R9ICk7CgogICAgIyBTYXZlIGdpdmVuIHBhcmFtZXRlcnMgaW4gb3duIHZhcmlhYmxlcyBmb3IgYmV0dGVyIHVzYWdlLgogICAgbXkgJUNvbnRlbnRLZXl3b3JkcyAgICA9ICV7ICRQYXJhbXtDb250ZW50S2V5d29yZHN9IH07CiAgICBteSAlS2V5d29yZEFydGljbGVMaXN0ID0gJXsgJFBhcmFte0tleXdvcmRBcnRpY2xlTGlzdH0gfTsKCiAgICAjIEJ1aWxkIHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlcyBhbmQgc2F2ZSBhIHF1YW50aWZpZXIgZm9yIHRoZSBkaWZmZXJlbnQgYXJ0aWNsZXMgd2l0aCB0aGUgcmVsZXZhbmNlCiAgICAjICAgZnJvbSB0aGUga2V5d29yZCwgd2hpY2ggaXMgcmVsYXRlZCB0byB0aGUgZmFxIGFydGljbGUuCiAgICAjIEUuZy4KICAgICMgICAtIEZBUUFydGljbGUgMSB3aXRoIGtleXdvcmRzOiAgJ2l0c20nLCAnY2hhbmdlbWFuYWdlbWVudCcsICd0aWNrZXQnCiAgICAjICAgLSBGQVFBcnRpY2xlIDIgd2l0aCBrZXl3b3JkczogJ2l0c20nLCAnY2hhbmdlbWFuZ2VtZW50JwogICAgIyAgIC0gRkFRQXJ0aWNsZSAzIHdpdGgga2V5d29yZHM6ICd0aWNrZXQnCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gY2hhbmdlbWFuYWdlbWVudCAoNSkKICAgICMgICAtIHRpY2tldCAoNCkKICAgICMgICAtIGl0c20gKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllcik6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gMTEKICAgICMgICAtIEZBUUFydGljbGUgMiA9PiA2CiAgICAjICAgLSBGQVFBcnRpY2xlIDMgPT4gNAogICAgbXkgJUxvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlczsKCiAgICBDT05URU5US0VZV09SRDoKICAgIGZvciBteSAkQ29udGVudEtleXdvcmQgKCBzb3J0IGtleXMgJUNvbnRlbnRLZXl3b3JkcyApIHsKCiAgICAgICAgbmV4dCBDT05URU5US0VZV09SRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkS2V5d29yZEFydGljbGVMaXN0eyRDb250ZW50S2V5d29yZH0gKTsKCiAgICAgICAgRkFRQVJUSUNMRUlEOgogICAgICAgIGZvciBteSAkRkFRQXJ0aWNsZUlEICggQHsgJEtleXdvcmRBcnRpY2xlTGlzdHskQ29udGVudEtleXdvcmR9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzeyRGQVFBcnRpY2xlSUR9ICkgewoKICAgICAgICAgICAgICAgIG15ICVGQVFBcnRpY2xlRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRGQVFBcnRpY2xlRGF0YXtWb3Rlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEZBUUFydGljbGVEYXRhe1N0YXJDb3VudGVyfSA9IGludCggJEZBUUFydGljbGVEYXRhe1ZvdGVSZXN1bHR9ICogMC4wNSApOwoKICAgICAgICAgICAgICAgICAgICAjIEFkZCAxIGJlY2F1c2UgbG93ZXN0IHZhbHVlIHNob3VsZCBiZSBhbHdheXMgMS4KICAgICAgICAgICAgICAgICAgICBpZiAoICRGQVFBcnRpY2xlRGF0YXtTdGFyQ291bnRlcn0gPCA1ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRkFRQXJ0aWNsZURhdGF7U3RhckNvdW50ZXJ9Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQWRkIHRoZSBGQVEgYXJ0aWNsZSBkYXRhIHRvIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4KICAgICAgICAgICAgICAgICRMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXN7JEZBUUFydGljbGVJRH0gPSB7CiAgICAgICAgICAgICAgICAgICAgJUZBUUFydGljbGVEYXRhLAogICAgICAgICAgICAgICAgICAgIEtleXdvcmRDb3VudGVyID0+ICRDb250ZW50S2V5d29yZHN7JENvbnRlbnRLZXl3b3JkfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBJbmNyZWFzZSB0aGUgcXVhbnRpZmllciwgaWYgdGhlIGFydGljbGUgaGFzIG1vcmUgdGhlbiBvbmUgcmVsZXZhbnQga2V5d29yZC4KICAgICAgICAgICAgICAgICRMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXN7JEZBUUFydGljbGVJRH0tPntLZXl3b3JkQ291bnRlcn0gKz0gJENvbnRlbnRLZXl3b3Jkc3skQ29udGVudEtleXdvcmR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgVG8gc2F2ZSB0aGUgcmVsYXRlZCBmYXEgYXJ0aWNsZSBmcm9tIHRoZSBsb29rdXAgaGFzaC4KICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgPSBtYXAgeyAkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzeyRffSB9IHNvcnQga2V5cyAlTG9va3VwUmVsYXRlZEZBUUFydGljbGVzOwoKICAgICMgU29ydCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwbHVnLWlucyBieSAna2V5d29yZCBxdWFudGlmaWVyJywgJ2NoYW5nZSB0aW1lJyBhbmQgJ2lkIChjcmVhdGUgdGltZSknLgogICAgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCA9IHNvcnQgewogICAgICAgICRiLT57S2V5d29yZENvdW50ZXJ9IDw9PiAkYS0+e0tleXdvcmRDb3VudGVyfQogICAgICAgICAgICB8fCAkYi0+e0NoYW5nZWR9IGNtcCAkYS0+e0NoYW5nZWR9CiAgICAgICAgICAgIHx8IGludCAkYi0+e0lEfSA8PT4gaW50ICRhLT57SUR9CiAgICB9IEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7CgogICAgIyBDdXQgdGhlIG5vdCBuZWVkZWQgYXJ0aWNsZXMgZnJvbSB0aGUgYXJyYXksIGlmIGEgbGltaXQgaXMgZ2l2ZW4uCiAgICBpZiAoICRQYXJhbXtMaW1pdH0gJiYgc2NhbGFyIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgPiAkUGFyYW17TGltaXR9ICkgewogICAgICAgIHNwbGljZSBAUmVsYXRlZEZBUUFydGljbGVMaXN0LCAkUGFyYW17TGltaXR9OwogICAgfQoKICAgIHJldHVybiBAUmVsYXRlZEZBUUFydGljbGVMaXN0Owp9Cgo9aGVhZDIgX0J1aWxkS2V5d29yZENvdW50ZXJGcm9tQ29udGVudCgpCgpCdWlsZCB0aGUga2V5d29yZHMgZm9yIHRoZSBnaXZlbiBjb250ZW50LgoKICAgIG15ICRDb250ZW50ID0gJEZBUU9iamVjdC0+X0J1aWxkS2V5d29yZENvdW50ZXJGcm9tQ29udGVudCgKICAgICAgICBDb250ZW50ID0+ICdTb21lIFRleHQgd2l0aCBhIGxpbmsuIE1vcmUgdGV4dC4gWzFdIGh0dHBzOi8vb3RvYm8uZGUvJywKICAgICk7CgpSZXR1cm5zCgogICAgJUNvbnRlbnRLZXl3b3JkcyA9ICgKICAgICAgICBleGFtcGxlID0+IDEsCiAgICAgICAgdGVzdCAgICA9PiAzLAogICAgICAgIGZhcSAgICAgPT4gNiwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgX0J1aWxkS2V5d29yZENvdW50ZXJGcm9tQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29udGVudH0gKTsKCiAgICBteSAlQ29udGVudEtleXdvcmRzOwoKICAgICMgU3RyaXAgbm90IHdhbnRlZCBzdHVmZiBmcm9tIHRoZSBnaXZlbiBzdWJqZWN0IGFuZCBib2R5LgogICAgZm9yIG15ICRDb250ZW50ICggQHsgJFBhcmFte0NvbnRlbnR9IH0gKSB7CgogICAgICAgICRDb250ZW50IHx8PSAnJzsKCiAgICAgICAgIyBSZW1vdmUgdGhlIGxpbmtzIGZyb20gdGhlIGNvbnRlbnQuCiAgICAgICAgJENvbnRlbnQgPSAkU2VsZi0+X1JlbW92ZUxpbmtzRnJvbUNvbnRlbnQoCiAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBTcGxpdCB0aGUgdGV4dCBpbiB3b3JkIGFuZCBzYXZlIHRoZSB3b3JkIGFzIHRoZSBnaXZlbiBrZXl3b3JkcyAoc2VwYXJhdG9yIGlzIGEgd2hpdGVzcGFjZSkuCiAgICAgICAgJENvbnRlbnQgPX4gc3tbXC5cLFw7XDpdKFxzfFxzPyBcWiApfXsgfXhtc2c7CiAgICAgICAgbXkgQEZpZWxkS2V5d29yZHMgPSAoICRDb250ZW50ID1+IG17IFtcd1x4ezA5ODB9LVx4ezA5RkZ9XC1dK1wuP1tcd1x4ezA5ODB9LVx4ezA5RkZ9XC1dKiB9eG1zZyApOwoKICAgICAgICBLRVlXT1JEOgogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEZpZWxkS2V5d29yZHMpIHsKCiAgICAgICAgICAgICMgU2F2ZSB0aGUga2V5d29yZHMgYWx3YXlzIGFzIGxvd2VyIGNhc2UuCiAgICAgICAgICAgICRLZXl3b3JkID0gbGMgJEtleXdvcmQ7CgogICAgICAgICAgICAjIEluY3JlYXNlIHRoZSBrZXl3b3JkIGNvdW50ZXIgZnJvbSB0aGUgdGV4dCBjb250ZW50LCB0byBpbmNyZWFzZSB0aGUgcmVsZXZhbmNlIGZvciB0aGlzIGtleXdvcmQuCiAgICAgICAgICAgICRDb250ZW50S2V5d29yZHN7JEtleXdvcmR9Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlQ29udGVudEtleXdvcmRzOwp9Cgo9aGVhZDIgX1JlbW92ZUxpbmtzRnJvbUNvbnRlbnQoKQoKUmVtb3ZlIGxpbmtzIGZyb20gdGhlIGdpdmVuIGNvbnRlbnQuCgogICAgbXkgJENvbnRlbnQgPSAkRkFRT2JqZWN0LT5fUmVtb3ZlTGlua3NGcm9tQ29udGVudCgKICAgICAgICBDb250ZW50ID0+ICdTb21lIFRleHQgd2l0aCBhIGxpbmsuIE1vcmUgdGV4dC4gWzFdIGh0dHBzOi8vb3RvYm8uZGUvJywKICAgICk7CgpSZXR1cm5zCgogICAgJENvbnRlbnQgPSAnU29tZSBUZXh0IHdpdGggYSBsaW5rLiBNb3JlIHRleHQuJzsKCj1jdXQKCnN1YiBfUmVtb3ZlTGlua3NGcm9tQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtDb250ZW50fSA9fiBzeyBcW1xkKlxdIH17fXhtc2c7CiAgICAkUGFyYW17Q29udGVudH0gPX4gc3sgaHR0cHM6Ly9bXlxzXSogfXt9eG1zZzsKCiAgICByZXR1cm4gJFBhcmFte0NvbnRlbnR9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UT0JPIHByb2plY3QgKEw8aHR0cHM6Ly9vdG9iby5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlN0YXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6OlN0YXRlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgc3RhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBTdGF0ZUFkZCgpCgphZGQgYSBzdGF0ZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+U3RhdGVBZGQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFR5cGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgc3RhdGUgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgU3RhdGVBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFR5cGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfc3RhdGUgKG5hbWUsIHR5cGVfaWQpCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8gKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17VHlwZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFN0YXRlR2V0KCkKCmdldCBhIHN0YXRlIGFzIGhhc2gKCiAgICBteSAlU3RhdGUgPSAkRkFRT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVN0YXRlID0gKAogICAgICAgIFN0YXRlSUQgID0+IDEsCiAgICAgICAgTmFtZSAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIFR5cGVJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3RhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lLCB0eXBlX2lkCiAgICAgICAgICAgIEZST00gZmFxX3N0YXRlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N0YXRlSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIFR5cGVJRCAgPT4gJFJvd1syXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIFN0YXRlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIGxpc3QgYXMgaGFzaAoKICAgIG15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKb3B0aW9uYWwsIGdldCBzdGF0ZSBsaXN0IGZvciBzb21lIHN0YXRlIHR5cGVzOgoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJ10sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlU3RhdGVzID0gKAogICAgICAgIDEgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIDIgPT4gJ2V4dGVybmFsIChjdXN0b21lciknLAogICAgICAgIDMgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZSc7CgogICAgIyBGaWx0ZXIgc3RhdGUgbGlzdCBieSB0eXBlIGlkIGlmIGF2YWlsYWJsZS4KICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17VHlwZXN9ICkgKSB7CiAgICAgICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkU2VsZi0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRQYXJhbXtUeXBlc30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFN0YXRlVHlwZUhhc2hSZWYpICkgewogICAgICAgICAgICAkU1FMIC49ICcgV0hFUkUgdHlwZV9pZCBJTiAoICcgLiBqb2luKCAnLCAnLCBzb3J0IGtleXMgJXskU3RhdGVUeXBlSGFzaFJlZn0gKSAuICcgKSc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApOwoKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aGVhZDIgU3RhdGVVcGRhdGUoKQoKdXBkYXRlIGEgc3RhdGUKCiAgICBteSBTdWNjZXNzID0gJEZBUU9iamVjdC0+U3RhdGVVcGRhdGUoCiAgICAgICAgU3RhdGVJRCA9PiAxLAogICAgICAgIE5hbWUgICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVHlwZUlEICA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHN0YXRlIGNvdWxkIG5vdCBiZSB1cGRhdGVkCgo9Y3V0CgpzdWIgU3RhdGVVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdGF0ZUlEIE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX3N0YXRlCiAgICAgICAgICAgIFNFVCBuYW1lID0gPywgdHlwZV9pZCA9ID8sCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17VHlwZUlEfSwgXCRQYXJhbXtTdGF0ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFN0YXRlVHlwZUdldCgpCgpnZXQgYSBzdGF0ZSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKT3IKCiAgICBteSAkU3RhdGVUeXBlSGFzaFJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgJ1N0YXRlSUQnID0+IDEsCiAgICAgICAgJ05hbWUnICAgID0+ICdpbnRlcm5hbCcsCiAgICB9OwoKPWN1dAoKc3ViIFN0YXRlVHlwZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlCiAgICAgICAgV0hFUkUnOwogICAgbXkgQEJpbmQ7CiAgICBteSAkQ2FjaGVLZXkgPSAnU3RhdGVUeXBlR2V0OjonOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTdGF0ZUlEfSApIHsKICAgICAgICAkU1FMIC49ICcgaWQgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte1N0YXRlSUR9OwogICAgICAgICRDYWNoZUtleSAuPSAnSUQ6OicgLiAkUGFyYW17U3RhdGVJRH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICkgewogICAgICAgICRTUUwgLj0gJyBuYW1lID0gPyc7CiAgICAgICAgcHVzaCBAQmluZCwgXCRQYXJhbXtOYW1lfTsKICAgICAgICAkQ2FjaGVLZXkgLj0gJ05hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuICRDYWNoZSBpZiAkQ2FjaGU7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFxAQmluZCwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgID0+ICRSb3dbMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgU3RhdGVUeXBlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIHR5cGUgbGlzdCBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpvcHRpb25hbCwgZ2V0IHN0YXRlIHR5cGUgbGlzdCBmb3Igc29tZSBzdGF0ZXM6CgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnXSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdGF0ZVR5cGVIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAzID0+ICdwdWJsaWMnLAogICAgICAgIDIgPT4gJ2V4dGVybmFsJywKICAgIH07Cgo9Y3V0CgpzdWIgU3RhdGVUeXBlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgRlJPTSBmYXFfc3RhdGVfdHlwZSc7CgogICAgIyB0eXBlcyBhcmUgZ2l2ZW4KICAgIGlmICggJFBhcmFte1R5cGVzfSApIHsKCiAgICAgICAgaWYgKCByZWYgJFBhcmFte1R5cGVzfSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnVHlwZXMgc2hvdWxkIGJlIGFuIGFycmF5IHJlZmVyZW5jZSEnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjYWxsIFN0YXRlVHlwZUxpc3Qgd2l0aG91dCBwYXJhbWV0ZXJzIHRvIHZhbGlkYXRlIFR5cGVzCiAgICAgICAgbXkgJFN0YXRlVHlwZUxpc3QgPSAkU2VsZi0+U3RhdGVUeXBlTGlzdCggVXNlcklEID0+ICRQYXJhbXtVc2VySUR9ICk7CiAgICAgICAgbXkgJVN0YXRlVHlwZXMgICAgPSByZXZlcnNlICV7ICRTdGF0ZVR5cGVMaXN0IHx8IHt9IH07CiAgICAgICAgbXkgQFR5cGVzOwoKICAgICAgICAjIG9ubHkgYWRkIHR5cGVzIHRvIGxpc3QgdGhhdCBleGlzdAogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJFBhcmFte1R5cGVzfSB9ICkgewogICAgICAgICAgICBuZXh0IFRZUEUgaWYgISRTdGF0ZVR5cGVzeyRUeXBlfTsKICAgICAgICAgICAgcHVzaCBAVHlwZXMsICInJFR5cGUnIjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIGlmIChAVHlwZXMpIHsKICAgICAgICAgICAgJFNRTCAuPSAnIFdIRVJFIG5hbWUgSU4gKCAnIC4gam9pbiggJywgJywgQFR5cGVzICkgLiAnICknOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHByZXBhcmUgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuIFwlTGlzdDsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgRkFRIHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBWb3RlQWRkKCkKCmFkZCBhIHZvdGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnU29tZSBUZXh0JywKICAgICAgICBSYXRlICAgICAgPT4gMTAwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiB2b3RlIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIFZvdGVBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVkQnkgSXRlbUlEIElQIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfdm90aW5nIChjcmVhdGVkX2J5LCBpdGVtX2lkLCBpcCwgaW50ZXJmYWNlLCByYXRlLCBjcmVhdGVkICkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAgKScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17Q3JlYXRlZEJ5fSwgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0lQfSwgXCRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBcJFBhcmFte1JhdGV9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnSXRlbVZvdGVEYXRhR2V0OjonIC4gJFBhcmFte0l0ZW1JRH07CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVm90ZURlbGV0ZSgpCgpkZWxldGUgYSB2b3RlCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgIFZvdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiB2b3RlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgVm90ZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZvdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Vm90ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZvdGVHZXQoKQoKZ2V0IGEgdm90ZSBpbmZvcm1hdGlvbgoKICAgIG15ICVWb3RlRGF0YSA9ICRGQVFPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJUCAgICAgICAgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVZvdGVEYXRhID0gKAogICAgICAgIEl0ZW1JRCAgICA9PiAyMywKICAgICAgICBSYXRlICAgICAgPT4gNTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBvciAyNSBvciA3NSBvciAxMDAKICAgICAgICBJUCAgICAgICAgPT4gJzE5Mi4xNjguMC4xJywKICAgICAgICBJbnRlcmZhY2UgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlIElECiAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTA2LTE0IDEyOjMyOjAzJywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENyZWF0ZUJ5IEl0ZW1JRCBJbnRlcmZhY2UgSVAgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFZhbHVlczsKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGNyZWF0ZWRfYnksIGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIGNyZWF0ZWQsIHJhdGUKICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICBXSEVSRSc7CgogICAgIyBwdWJsaWMKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzMnICkgewogICAgICAgICRTUUwgLj0gJwogICAgICAgICAgICBpcCA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/JzsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtJUH0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgY3VzdG9tZXIKICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzInIHx8ICRQYXJhbXtJbnRlcmZhY2V9IGVxICcxJyApIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgY3JlYXRlZF9ieSA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/JzsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtDcmVhdGVCeX0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgbGVhdmUgYSBzcGFjZSBiZXR3ZWVuIEFORCBjb25kaXRpb24gYW5kIE9SREVSIEJZIHN0YXRlbWVudAogICAgJFNRTCAuPSAnCiAgICAgICAgT1JERVIgQlkgY3JlYXRlZCBERVNDJzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFxAVmFsdWVzLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzBdLAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRSb3dbMl0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgUmF0ZSAgICAgID0+ICRSb3dbNV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gaWYgISVEYXRhOwogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWhlYWQyIFZvdGVTZWFyY2goKQoKcmV0dXJucyBhbiBhcnJheSB3aXRoIFZvdGVJRHMKCiAgICBteSAkVm90ZUlEQXJyYXlyZWYgPSAkRkFRT2JqZWN0LT5Wb3RlU2VhcmNoKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFZvdGVJREFycmF5cmVmID0gWwogICAgICAgIDIzLAogICAgICAgIDQ1LAogICAgXTsKCj1jdXQKCnN1YiBWb3RlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICAgICAgV0hFUkUgaXRlbV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgQFZvdGVJRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWb3RlSURzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQFZvdGVJRHM7Cn0KCj1oZWFkMiBJdGVtVm90ZURhdGFHZXQoKQoKUmV0dXJucyBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIG51bWJlciBvZiB2b3RlcyBhbmQgdGhlIHZvdGUgcmVzdWx0LgoKICAgIG15ICRWb3RlRGF0YUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5JdGVtVm90ZURhdGFHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RlRGF0YUhhc2hSZWYgPSB7CiAgICAgICAgUmVzdWx0ID0+IDc1LjAwMDAsCiAgICAgICAgVm90ZXMgID0+IDUKICAgIH07Cgo9Y3V0CgpzdWIgSXRlbVZvdGVEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtVm90ZURhdGFHZXQ6OicgLiAkUGFyYW17SXRlbUlEfTsKICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGNvdW50KCopLCBhdmcocmF0ZSkKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtWb3Rlc30gID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtSZXN1bHR9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UT0JPIHByb2plY3QgKEw8aHR0cHM6Ly9vdG9iby5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkZBUVNlYXJjaAogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2UKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5CiAgICBLZXJuZWw6OlN5c3RlbTo6RkFROjpTdGF0ZQogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6UmVsYXRlZEFydGljbGUKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGUKICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUSAtICBGQVEgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgRkFRcyBvciB0byBnZXQgRkFRcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdMaWtlRXNjYXBlU3RyaW5nJyk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e1ZvdGluZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgIyBnZXQgdGhlIGNhY2hlIFRUTCAoaW4gc2Vjb25kcykKICAgICRTZWxmLT57Q2FjaGVUVEx9ID0gaW50KCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q2FjaGVUVEwnKSB8fCA2MCAqIDYwICogMjQgKiAyICk7CgogICAgIyBpbml0IG9mIGV2ZW50IGhhbmRsZXIKICAgICMgY3VycmVudGx5IHRoZXJlIGFyZSBubyBGQVEgZXZlbnQgbW9kdWxlcyBidXQgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgb3RoZXJ3aXNlIGVycm9ycyBhcmUKICAgICMgICAgIGxvZyBkdWUgdG8gc2VhcmNoaW5nIHVuZGVmaW5lZCBzZXR0aW5nIGludG8gQ29uZmlnT2JqZWN0LgogICAgJFNlbGYtPkV2ZW50SGFuZGxlckluaXQoCiAgICAgICAgQ29uZmlnID0+ICcnLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBGQVFHZXQoKQoKZ2V0IGFuIEZBUSBpdGVtCgogICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBJdGVtRmllbGRzID0+IDAsICAgICAgICAjIE9wdGlvbmFsLCBkZWZhdWx0IDAuIFRvIGluY2x1ZGUgdGhlIGl0ZW0gZmllbGQgY29udGVudCBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBGQVEgaXRlbSBvbiB0aGUgcmV0dXJuIHN0cnVjdHVyZS4KICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRkFRID0gKAogICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgQ2F0ZWdvcnlOYW1lJyAgICAgPT4gJ0NhdGVnb3J5QTo6Q2F0ZWdvcnlCJywKICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlCJywKICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgVmFsaWRJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBWYWxpZCAgICAgICAgICAgICA9PiAndmFsaWQnLAogICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgIENoYW5nZWQnICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBDaGFuZ2VkQnkgICAgICAgICA9PiAnMScsCiAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICcxMjk0Mjg2MDMwLTMxLjE2OTcyOTcxMDQ3MzInLCAgIyBGQVEgQXJ0aWNsZSBuYW1lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN5c3RlbXRpbWUgKyAnLScgKyByYW5kb20gbnVtYmVyCiAgICAgICAgU2VydmljZUxpc3QgICAgICAgPT4geyAnMScgPT4gJ0NvbXB1dGVyJyB9ICAgICAgICAgICAjIEhhc2ggb2YgcmVsYXRlZCBzZXJ2aWNlcwoKICAgICk7CgogICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUZBUSA9ICgKCiAgICAgICAgIyBDb21wYXRpYmlsaXR5IElEIG5hbWVzLgogICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAoKICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAzMiwKICAgICAgICBOdW1iZXIgICAgICAgICAgICA9PiAxMDAwMzIsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzInLAogICAgICAgIENhdGVnb3J5TmFtZScgICAgID0+ICdDYXRlZ29yeUE6OkNhdGVnb3J5QicsCiAgICAgICAgQ2F0ZWdvcnlTaG9ydE5hbWUgPT4gJ0NhdGVnb3J5QicsCiAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZSAgICAgICAgICA9PiAnZW4nLAogICAgICAgIFRpdGxlICAgICAgICAgICAgID0+ICdBcnRpY2xlIFRpdGxlJywKICAgICAgICBGaWVsZDEgICAgICAgICAgICA9PiAnVGhlIFN5bXB0b21zJywKICAgICAgICBGaWVsZDIgICAgICAgICAgICA9PiAnVGhlIFByb2JsZW0nLAogICAgICAgIEZpZWxkMyAgICAgICAgICAgID0+ICdUaGUgU29sdXRpb24nLAogICAgICAgIEZpZWxkNCAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICBGaWVsZDUgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgRmllbGQ2ICAgICAgICAgICAgPT4gJ0NvbW1lbnRzJywKICAgICAgICBBcHByb3ZlZCAgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMAogICAgICAgIFZhbGlkSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgICAgICAgPT4gJ3RleHQvcGxhaW4nLCAgICAgICAgICAgICAgICAgICMgb3IgJ3RleHQvaHRtbCcKICAgICAgICBWYWxpZCAgICAgICAgICAgICA9PiAndmFsaWQnLAogICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgIENoYW5nZWQnICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBDaGFuZ2VkQnkgICAgICAgICA9PiAnMScsCiAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICcxMjk0Mjg2MDMwLTMxLjE2OTcyOTcxMDQ3MzInLCAgIyBGQVEgQXJ0aWNsZSBuYW1lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN5c3RlbXRpbWUgKyAnLScgKyByYW5kb20gbnVtYmVyCiAgICAgICAgU2VydmljZUxpc3QgICAgICAgPT4geyAnMScgPT4gJ0NvbXB1dGVyJyB9ICAgICAgICAgICAjIEhhc2ggb2YgcmVsYXRlZCBzZXJ2aWNlcwogICAgKTsKCj1jdXQKCnN1YiBGQVFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlbmFtZSBmcm9tIEl0ZW1JRCB0byBGQVFJRAogICAgaWYgKCAkUGFyYW17RkFRSUR9ICkgewogICAgICAgICRQYXJhbXtJdGVtSUR9ID0gJFBhcmFte0ZBUUlEfTsKICAgIH0KCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJEZldGNoSXRlbUZpZWxkcyA9ICRQYXJhbXtJdGVtRmllbGRzfSA/IDEgOiAwOwoKICAgIG15ICRDYWNoZUtleSA9ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6JyAuICRGZXRjaEl0ZW1GaWVsZHM7CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkREJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzZXQgJURhdGEgZnJvbSBjYWNoZSBpZiBhbnkKICAgIG15ICVEYXRhOwogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKICAgICAgICAlRGF0YSA9ICV7JENhY2hlfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBnZXQgJURhdGEgZnJvbSB0aGUgREIKICAgIGVsc2UgewoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpLmZfbmFtZSwgaS5mX2xhbmd1YWdlX2lkLCBpLmZfc3ViamVjdCwgaS5jcmVhdGVkLCBpLmNyZWF0ZWRfYnksIGkuY2hhbmdlZCwKICAgICAgICAgICAgICAgICAgICBpLmNoYW5nZWRfYnksIGkuY2F0ZWdvcnlfaWQsIGkuc3RhdGVfaWQsIGMubmFtZSwgcy5uYW1lLCBsLm5hbWUsIGkuZl9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICBpLmFwcHJvdmVkLCBpLnZhbGlkX2lkLCBpLmNvbnRlbnRfdHlwZSwgaS5mX251bWJlciwgc3QuaWQsIHN0Lm5hbWUKICAgICAgICAgICAgICAgIEZST00gZmFxX2l0ZW0gaSwgZmFxX2NhdGVnb3J5IGMsIGZhcV9zdGF0ZSBzLCBmYXFfc3RhdGVfdHlwZSBzdCwgZmFxX2xhbmd1YWdlIGwKICAgICAgICAgICAgICAgIFdIRVJFIGkuc3RhdGVfaWQgPSBzLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIHMudHlwZV9pZCA9IHN0LmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuY2F0ZWdvcnlfaWQgPSBjLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuZl9sYW5ndWFnZV9pZCA9IGwuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgaS5pZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgJURhdGEgPSAoCgogICAgICAgICAgICAgICAgIyBDb21wYXRpYmlsaXR5IElEIG5hbWVzLgogICAgICAgICAgICAgICAgSUQgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGQVFJRCA9PiAkUGFyYW17SXRlbUlEfSwKCiAgICAgICAgICAgICAgICAjIEdldCBkYXRhIGF0dHJpYnV0ZXMuCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgQ3JlYXRlZCAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgQ2hhbmdlZCAgICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICA9PiAkUm93WzldLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICA9PiAkUm93WzEwXSwKICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgPT4gJFJvd1sxMV0sCiAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgID0+ICRSb3dbMTJdLAogICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICA9PiAkUm93WzEzXSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gJFJvd1sxNF0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgID0+ICRSb3dbMTVdLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICA9PiAkUm93WzE2XSwKICAgICAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgPT4gJFJvd1sxN10sCiAgICAgICAgICAgICAgICBTdGF0ZVR5cGVOYW1lID0+ICRSb3dbMThdLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICElRGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggSXRlbUlEICRQYXJhbXtJdGVtSUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIEZBUSBpdGVtIGZpZWxkcyBhcmUgcmVxdWlyZWQKICAgICAgICBpZiAoJEZldGNoSXRlbUZpZWxkcykgewoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBmaWVsZCBuYW1lCiAgICAgICAgICAgICAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGROdW1iZXIiOwoKICAgICAgICAgICAgICAgICMgZ2V0IGVhY2ggZmllbGQgY29udGVudAogICAgICAgICAgICAgICAgJERhdGF7JEZpZWxkfSA9ICRTZWxmLT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIG51bWJlcgogICAgICAgIGlmICggISREYXRhe051bWJlcn0gKSB7CgogICAgICAgICAgICBteSAkTnVtYmVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW1JRCcpIC4gJzAwJyAuICREYXRhe0l0ZW1JRH07CgogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkTnVtYmVyLCBcJERhdGF7SXRlbUlEfSBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJERhdGF7TnVtYmVyfSA9ICROdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgY2F0ZWdvcnkgbG9uZyBuYW1lcwogICAgICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSB0aGUgY2F0ZWdvcnkgc2hvcnQgbmFtZQogICAgICAgICREYXRhe0NhdGVnb3J5U2hvcnROYW1lfSA9ICREYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAkRGF0YXtDYXRlZ29yeU5hbWV9ID0gJENhdGVnb3J5VHJlZS0+eyAkRGF0YXtDYXRlZ29yeUlEfSB9OwoKICAgICAgICAjIGdldCB2YWxpZCBsaXN0CiAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgICAgICAkRGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkRGF0YXtWYWxpZElEfSB9OwojIEZBUSBTZXJ2aWNlCiAgICAgICAgIyBnZXQgcmVsYXRlZCBzZXJ2aWNlcwogICAgICAgIG15ICRTZXJ2aWNlc1JlbGF0ZWQgPSAkU2VsZi0+RkFRU2VydmljZUdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICApOwogICAgICAgIGlmICggJFNlcnZpY2VzUmVsYXRlZCApIHsKICAgICAgICAgICAgZm9yIG15ICRTZXJ2aWNlICggQCRTZXJ2aWNlc1JlbGF0ZWQgKSB7CiAgICAgICAgICAgICAgICAkRGF0YXtTZXJ2aWNlTGlzdH0tPnsgJFNlcnZpY2UtPnsnU2VydmljZUlEJ30gfSA9ICRTZXJ2aWNlLT57ICdOYW1lJyB9OwogICAgICAgICAgICB9CiAgICAgICAgfQojIGVvIEZBUSBTZXJ2aWNlCgogICAgICAgICMgY2FjaGUgcmVzdWx0CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVm90ZURhdGE7CiAgICBpZiAoICRTZWxmLT57Vm90aW5nfSApIHsKICAgICAgICAkVm90ZURhdGEgPSAkU2VsZi0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmcm9tIGNvbmZpZwogICAgbXkgJERlY2ltYWxQbGFjZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzJykgfHwgMDsKCiAgICAjIGZvcm1hdCB0aGUgdm90ZSByZXN1bHQKICAgIG15ICRWb3RlUmVzdWx0ID0gc3ByaW50ZiggIiUwLiIgLiAkRGVjaW1hbFBsYWNlcyAuICJmIiwgJFZvdGVEYXRhLT57UmVzdWx0fSB8fCAwICk7CgogICAgIyBhZGQgdm90aW5nIGluZm9ybWF0aW9uIHRvIEZBUSBpdGVtCiAgICAkRGF0YXtWb3RlUmVzdWx0fSA9ICRWb3RlUmVzdWx0OwogICAgJERhdGF7Vm90ZXN9ICAgICAgPSAkVm90ZURhdGEtPntWb3Rlc30gfHwgMDsKCiAgICAjIGNoZWNrIGlmIG5lZWQgdG8gcmV0dXJuIER5bmFtaWNGaWVsZHMKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZHN9ICkgewoKICAgICAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMgZm9yIHRoZSBvYmplY3QgdHlwZSBGQVEKICAgICAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnRkFRJwogICAgICAgICk7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZExpc3R9ICkgewoKICAgICAgICAgICAgIyB2YWxpZGF0ZSBlYWNoIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfSApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBpbnRvIHRoZSBkYXRhIGhhc2gKICAgICAgICAgICAgJERhdGF7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCnN1YiBJdGVtRmllbGRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgSXRlbUlEIEZpZWxkKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBmb3IgdmFsaWQgZmllbGQgbmFtZQogICAgaWYgKCAkUGFyYW17RmllbGR9ICF+IG17IFxBIEZpZWxkIFsxLTZdIFx6IH1tc3hpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJyRQYXJhbXtGaWVsZH0nIGlzIGludmFsaWQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0l0ZW1GaWVsZEdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH07CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgIyBjaGVjayBpZiBhIGNhY2hlIGVudHJ5IGV4aXN0cyBmb3IgdGhlIGdpdmVuIEZpZWxkCiAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICYmIGV4aXN0cyAkQ2FjaGUtPnsgJFBhcmFte0ZpZWxkfSB9ICkgewoKICAgICAgICByZXR1cm4gJENhY2hlLT57ICRQYXJhbXtGaWVsZH0gfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBhIGZpZWxkIGxvb2t1cCB0YWJsZQogICAgbXkgJUZpZWxkTG9va3VwID0gKAogICAgICAgIEZpZWxkMSA9PiAnZl9maWVsZDEnLAogICAgICAgIEZpZWxkMiA9PiAnZl9maWVsZDInLAogICAgICAgIEZpZWxkMyA9PiAnZl9maWVsZDMnLAogICAgICAgIEZpZWxkNCA9PiAnZl9maWVsZDQnLAogICAgICAgIEZpZWxkNSA9PiAnZl9maWVsZDUnLAogICAgICAgIEZpZWxkNiA9PiAnZl9maWVsZDYnLAogICAgKTsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAnIC4gJEZpZWxkTG9va3VweyAkUGFyYW17RmllbGR9IH0gLiAnCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRGaWVsZDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRGaWVsZCA9ICRSb3dbMF0gfHwgJyc7CiAgICB9CgogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKCiAgICAgICAgIyBDYWNoZSBmaWxlIGZvciBJdGVtSUQgYWxyZWFkeSBleGlzdHMsIGFkZCBmaWVsZCBkYXRhLgogICAgICAgICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH0gPSAkRmllbGQ7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBDcmVhdGUgbmV3IGNhY2hlIGZpbGUuCiAgICAgICAgJENhY2hlID0gewogICAgICAgICAgICAkUGFyYW17RmllbGR9ID0+ICRGaWVsZCwKICAgICAgICB9OwogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gJENhY2hlLAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1cm4gJEZpZWxkOwp9Cgo9aGVhZDIgRkFRQWRkKCkKCmFkZCBhbiBhcnRpY2xlCgogICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICBOdW1iZXIgICAgICA9PiAnMTM0MDInLCAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDIgICAgICA9PiAnUHJvYmxlbS4uLicsICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDMgICAgICA9PiAnU29sdXRpb24uLi4nLCAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDQgICAgICA9PiAnRmllbGQ0Li4uJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDUgICAgICA9PiAnRmllbGQ1Li4uJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaWVsZDYgICAgICA9PiAnQ29tbWVudC4uLicsICAgICAjIChvcHRpb25hbCkKICAgICAgICBBcHByb3ZlZCAgICA9PiAxLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywgICAgICMgb3IgJ3RleHQvaHRtbCcKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEl0ZW1JRCA9IDM0OwoKPWN1dAoKc3ViIEZBUUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVGl0bGUgVXNlcklEIENvbnRlbnRUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWUgZm9yIFZhbGlkSUQKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbGlkSUR9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgbXkgQFZhbGlkSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgICAgICRQYXJhbXtWYWxpZElEfSA9ICRWYWxpZElEc1swXTsKICAgIH0KCiAgICAjIGNoZWNrIG5hbWUKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkUGFyYW17TmFtZX0gPSB0aW1lKCkgLiAnLScgLiByYW5kKDEwMCk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBudW1iZXIKICAgIGlmICggISRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW1JRCcpIC4gcmFuZCgxMDApOwogICAgfQoKICAgICMgY2hlY2sgaWYgYXBwcm92YWwgZmVhdHVyZSBpcyB1c2VkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGhlIGFwcHJvdmFsIGdyb3VwCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxHcm91cCcpOwoKICAgICAgICAjIHNldCBkZWZhdWx0IHRvIDAgaWYgYXBwcm92ZWQgcGFyYW0gaXMgbm90IGdpdmVuCiAgICAgICAgIyBvciBpZiB1c2VyIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0cyB0byBhcHByb3ZlCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17QXBwcm92ZWR9IHx8ICEkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKICAgICAgICAgICAgJFBhcmFte0FwcHJvdmVkfSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgYXBwcm92YWwgZmVhdHVyZSBpcyBub3QgYWN0aXZhdGVkLCBhIG5ldyBGQVEgaXRlbSBpcyBhbHdheXMgYXBwcm92ZWQKICAgIGVsc2UgewogICAgICAgICRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9pdGVtCiAgICAgICAgICAgICAgICAoZl9udW1iZXIsIGZfbmFtZSwgZl9sYW5ndWFnZV9pZCwgZl9zdWJqZWN0LAogICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQsIHN0YXRlX2lkLCBmX2tleXdvcmRzLCBhcHByb3ZlZCwgdmFsaWRfaWQsIGNvbnRlbnRfdHlwZSwKICAgICAgICAgICAgICAgIGZfZmllbGQxLCBmX2ZpZWxkMiwgZl9maWVsZDMsIGZfZmllbGQ0LCBmX2ZpZWxkNSwgZl9maWVsZDYsCiAgICAgICAgICAgICAgICBjcmVhdGVkLCBjcmVhdGVkX2J5LCBjaGFuZ2VkLCBjaGFuZ2VkX2J5KQogICAgICAgICAgICBWQUxVRVMKICAgICAgICAgICAgICAgICg/LCA/LCA/LCA/LAogICAgICAgICAgICAgICAgPywgPywgPywgPywgPywgPywKICAgICAgICAgICAgICAgID8sID8sID8sID8sID8sID8sCiAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOdW1iZXJ9LCAgICAgXCRQYXJhbXtOYW1lfSwgICAgXCRQYXJhbXtMYW5ndWFnZUlEfSwgXCRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sIFwkUGFyYW17U3RhdGVJRH0sIFwkUGFyYW17S2V5d29yZHN9LCAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1ZhbGlkSUR9LCAgICBcJFBhcmFte0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDF9LCBcJFBhcmFte0ZpZWxkMn0sIFwkUGFyYW17RmllbGQzfSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDR9LCBcJFBhcmFte0ZpZWxkNX0sIFwkUGFyYW17RmllbGQ2fSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBidWlsZCBTUUwgdG8gZ2V0IHRoZSBpZCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgRkFRIGFydGljbGUKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkIEZST00gZmFxX2l0ZW0KICAgICAgICBXSEVSRSBmX251bWJlciA9ID8KICAgICAgICAgICAgQU5EIGZfbmFtZSA9ID8KICAgICAgICAgICAgQU5EIGZfbGFuZ3VhZ2VfaWQgPSA/CiAgICAgICAgICAgIEFORCBjYXRlZ29yeV9pZCA9ID8KICAgICAgICAgICAgQU5EIHN0YXRlX2lkID0gPwogICAgICAgICAgICBBTkQgYXBwcm92ZWQgPSA/CiAgICAgICAgICAgIEFORCB2YWxpZF9pZCA9ID8KICAgICAgICAgICAgQU5EIGNyZWF0ZWRfYnkgPSA/CiAgICAgICAgICAgIEFORCBjaGFuZ2VkX2J5ID0gPyc7CgogICAgIyBoYW5kbGUgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFNRTCAuPSAnCiAgICAgICAgICAgIEFORCBmX3N1YmplY3QgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgdGl0bGUgaXMgYW4gZW1wdHkgc3RyaW5nCiAgICAjIGFuZCB0aGUgZGF0YWJhc2UgaXMgb3JhY2xlLCB3aGljaCB0cmVhdHMgZW1wdHkgc3RyaW5ncyBhcyBOVUxMCiAgICBlbHNlIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgQU5EICgoZl9zdWJqZWN0ID0gPykgT1IgKGZfc3ViamVjdCBJUyBOVUxMKSkgJzsKICAgIH0KCiAgICAjIGhhbmRsZSB0aGUga2V5d29yZHMKICAgIGlmICggJFBhcmFte0tleXdvcmRzfSApIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgQU5EIGZfa2V5d29yZHMgPSA/ICc7CiAgICB9CgogICAgIyBhZGRpdGlvbmFsIFNRTCBmb3IgdGhlIGNhc2UgdGhhdCBrZXl3b3JkcyBpcyBhbiBlbXB0eSBzdHJpbmcKICAgICMgYW5kIHRoZSBkYXRhYmFzZSBpcyBvcmFjbGUsIHdoaWNoIHRyZWF0cyBlbXB0eSBzdHJpbmdzIGFzIE5VTEwKICAgIGVsc2UgewogICAgICAgICRTUUwgLj0gJwogICAgICAgICAgICBBTkQgKChmX2tleXdvcmRzID0gPykgT1IgKGZfa2V5d29yZHMgSVMgTlVMTCkpICc7CiAgICB9CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBpZAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte051bWJlcn0sCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3RhdGVJRH0sCiAgICAgICAgICAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFwkUGFyYW17S2V5d29yZHN9LAogICAgICAgIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJElEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIHVwZGF0ZSBudW1iZXIKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N5c3RlbUlEJykgLiAnMDAnIC4gJElEOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJE51bWJlciwgXCRJRCBdLAogICAgKTsKCiAgICAjIGFkZCBoaXN0b3J5CiAgICAkU2VsZi0+RkFRSGlzdG9yeUFkZCgKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZWQnLAogICAgICAgIEl0ZW1JRCA9PiAkSUQsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiMjIEZBUSBTZXJ2aWNlCgogICAgIyBhZGQgc2VydmljZXMKCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgIGZvciBteSAkU2VydmljZUlEICggQHskUGFyYW17U2VydmljZUlEfX0gKSB7CiAgICAgICAgICAgIG15ICRBZGRTdWNjZXNzID0gJFNlbGYtPkZBUVNlcnZpY2VBZGQoCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJElELAogICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFBhcmFte1NlcnZpY2VMaXN0fS0+eyRTZXJ2aWNlSUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiMjIGVvIEZBUSBTZXJ2aWNlCgogICAgIyBjaGVjayBpZiBhcHByb3ZhbCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSAmJiAhJFBhcmFte0FwcHJvdmVkfSApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSUQsCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgRkFRTnVtYmVyICA9PiAkTnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFN0YXRlSUQgICAgPT4gJFBhcmFte1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGNyZWF0ZSBhcHByb3ZhbCB0aWNrZXQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDbGVhbnVwIHRoZSBjYWNoZSBmb3IgJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcgYW5kIHRoZSBydW50aW1lIGNhY2hlLgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgICk7CgogICAgIyBDbGVhbnVwIHRoZSBydW50aW1lIGNhY2hlIGZyb20gdGhlIEZBUS9DYXRlZ29yeS5wbS4KICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfTsKCiAgICByZXR1cm4gJElEOwp9Cgo9aGVhZDIgRkFRVXBkYXRlKCkKCnVwZGF0ZSBhbiBhcnRpY2xlCgogICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYW4nLCAgICAgIyBvciAndGV4dC9odG1sJwogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQXBwcm92YWxPZmYgPT4gMSwgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAoaWYgc2V0IHRvIDEgYXBwcm92YWwgaXMgaWdub3JlZC4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGltcG9ydGFudCB3aGVuIGNhbGxlZCBmcm9tIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUpCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhbid0IHVwZGF0ZSB0aGUgRkFRIGFydGljbGUKCj1jdXQKCnN1YiBGQVFVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVGl0bGUgVXNlcklEIENvbnRlbnRUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgaWYgbm8gbmFtZSB3YXMgZ2l2ZW4gdXNlIG9sZCBuYW1lIGZyb20gRkFRCiAgICBpZiAoICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte05hbWV9ID0gJEZBUURhdGF7TmFtZX07CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgJFBhcmFte1ZhbGlkSUR9ID0gJEZBUURhdGF7VmFsaWRJRH07CiAgICB9CgojIEZBUSBTZXJ2aWNlcwoKICAgIG15ICRTZXJ2aWNlc0luREIgPSAkU2VsZi0+RkFRU2VydmljZUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICApOwoKICAgIG15ICVTZXJ2aWNlc0luREI7CiAgICBtYXAgeyAkU2VydmljZXNJbkRCeyRfLT57U2VydmljZUlEfX0rKyB9IEB7JFNlcnZpY2VzSW5EQn07CgogICAgbXkgJFNlcnZpY2VzQ2hhbmdlZCA9IDA7CiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgIFNFUlZJQ0VJRDogZm9yIG15ICRTZXJ2aWNlSUQgKCBAeyRQYXJhbXtTZXJ2aWNlSUR9fSApIHsKICAgICAgICAgICAgaWYgKCBleGlzdHMgJFNlcnZpY2VzSW5EQnskU2VydmljZUlEfSApIHsKICAgICAgICAgICAgICAgZGVsZXRlICRTZXJ2aWNlc0luREJ7JFNlcnZpY2VJRH07CiAgICAgICAgICAgICAgIG5leHQgU0VSVklDRUlEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEFkZFN1Y2Nlc3MgPSAkU2VsZi0+RkFRU2VydmljZUFkZCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQYXJhbXtTZXJ2aWNlTGlzdH0tPnskU2VydmljZUlEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VydmljZXNDaGFuZ2VkKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIGtleXMgJVNlcnZpY2VzSW5EQiApIHsKICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRTZWxmLT5GQVFTZXJ2aWNlRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICk7CiAgICAgICAgJFNlcnZpY2VzQ2hhbmdlZCsrOwogICAgfQoKICAgICMgZGVsZXRlIGNhY2hlCiAgICBpZiAoICRTZXJ2aWNlc0NoYW5nZWQgKSB7CiAgICAgICAgJFNlbGYtPl9EZWxldGVGcm9tRkFRQ2FjaGUoJVBhcmFtKTsKICAgIH0KCiMgZW8gRkFRIFNlcnZpY2VzCgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIGZhcV9pdGVtIFNFVAogICAgICAgICAgICAgICAgZl9uYW1lID0gPywgZl9sYW5ndWFnZV9pZCA9ID8sIGZfc3ViamVjdCA9ID8sIGNhdGVnb3J5X2lkID0gPywKICAgICAgICAgICAgICAgIHN0YXRlX2lkID0gPywgZl9rZXl3b3JkcyA9ID8sIHZhbGlkX2lkID0gPywgY29udGVudF90eXBlID0gPywKICAgICAgICAgICAgICAgIGZfZmllbGQxID0gPywgZl9maWVsZDIgPSA/LAogICAgICAgICAgICAgICAgZl9maWVsZDMgPSA/LCBmX2ZpZWxkNCA9ID8sCiAgICAgICAgICAgICAgICBmX2ZpZWxkNSA9ID8sIGZfZmllbGQ2ID0gPywKICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZWRfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sIFwkUGFyYW17VGl0bGV9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3RhdGVJRH0sIFwkUGFyYW17S2V5d29yZHN9LCAgIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkMX0sICBcJFBhcmFte0ZpZWxkMn0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQzfSwgIFwkUGFyYW17RmllbGQ0fSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDV9LCAgXCRQYXJhbXtGaWVsZDZ9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJFNlbGYtPl9EZWxldGVGcm9tRkFRQ2FjaGUoJVBhcmFtKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHVwZGF0ZSBhcHByb3ZhbAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92YWxPZmZ9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgICAgICBteSAlR3JvdXBzID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBhcHByb3ZhbCBncm91cAogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKTsKCiAgICAgICAgIyBzZXQgYXBwcm92YWwgdG8gMCBpZiB1c2VyIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0cyB0byBhcHByb3ZlCiAgICAgICAgaWYgKCAhJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CiAgICAgICAgICAgICRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIGFwcHJvdmFsCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkU2VsZi0+X0ZBUUFwcHJvdmFsVXBkYXRlKAogICAgICAgICAgICBJdGVtSUQgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gJFBhcmFte0FwcHJvdmVkfSB8fCAwLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBhcHByb3ZhbCBmb3IgSXRlbUlEICRQYXJhbXtJdGVtSUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjYWNoZQogICAgICAgICRTZWxmLT5fRGVsZXRlRnJvbUZBUUNhY2hlKCVQYXJhbSk7CiAgICB9CgogICAgIyBjaGVjayBpZiBoaXN0b3J5IGVudHJ5IHNob3VsZCBiZSBhZGRlZAogICAgcmV0dXJuIDEgaWYgJFBhcmFte0hpc3RvcnlPZmZ9OwoKICAgICMgd3JpdGUgaGlzdG9yeSBlbnRyeQogICAgJFNlbGYtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICdVcGRhdGVkJywKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEF0dGFjaG1lbnRBZGQoKQoKYWRkIGFydGljbGUgYXR0YWNobWVudHMsIHJldHVybnMgdGhlIGF0dGFjaG1lbnQgaWQKCiAgICBteSAkQXR0YWNobWVudElEID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnc29tZW5hbWUueG1sJywKICAgICAgICBJbmxpbmUgICAgICA9PiAxLCAgICgwfDEsIGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEF0dGFjaG1lbnRJRCA9IDEyMyA7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCBhZGQgdGhlIGF0dGFjaG1lbnQKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIENvbnRlbnQgQ29udGVudFR5cGUgRmlsZW5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgaWYgKCAhJFBhcmFte0lubGluZX0gKSB7CiAgICAgICAgJFBhcmFte0lubGluZX0gPSAwOwogICAgfQoKICAgICMgZ2V0IGF0dGFjaG1lbnQgc2l6ZQogICAgewogICAgICAgIHVzZSBieXRlczsKICAgICAgICAkUGFyYW17RmlsZXNpemV9ID0gbGVuZ3RoICRQYXJhbXtDb250ZW50fTsKICAgICAgICBubyBieXRlczsKICAgIH0KCiAgICAjIGdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMKICAgIG15IEBJbmRleCA9ICRTZWxmLT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGZpbGVuYW1lCiAgICBteSAkTmV3RmlsZU5hbWUgPSAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgYnVpbGQgYSBsb29rdXAgaGFzaCBvZiBhbGwgZXhpc3RpbmcgZmlsZSBuYW1lcwogICAgbXkgJVVzZWRGaWxlOwogICAgZm9yIG15ICRGaWxlIChASW5kZXgpIHsKICAgICAgICAkVXNlZEZpbGV7ICRGaWxlLT57RmlsZW5hbWV9IH0gPSAxOwogICAgfQoKICAgICMgdHJ5IHRvIG1vZGlmeSB0aGUgdGhlIGZpbGUgbmFtZSBieSBhZGRpbmcgYSBudW1iZXIgaWYgaXQgZXhpc3RzIGFscmVhZHkKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoICRDb3VudCA8IDUwICkgewoKICAgICAgICAjIGluY3JlYXNlIGNvdW50ZXIKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgIyBpZiB0aGUgZmlsZSBuYW1lIGV4aXN0cwogICAgICAgIGlmICggZXhpc3RzICRVc2VkRmlsZXskTmV3RmlsZU5hbWV9ICkgewoKICAgICAgICAgICAgIyBmaWxlbmFtZSBoYXMgYSBmaWxlIG5hbWUgZXh0ZW5zaW9uIChlLmcuIHRlc3QuanBnKQogICAgICAgICAgICBpZiAoICRQYXJhbXtGaWxlbmFtZX0gPX4gbXsgXEEgKC4qKSBcLiAoLis/KSBceiB9eG1zICkgewogICAgICAgICAgICAgICAgJE5ld0ZpbGVOYW1lID0gIiQxLSRDb3VudC4kMiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTmV3RmlsZU5hbWUgPSAiJFBhcmFte0ZpbGVuYW1lfS0kQ291bnQiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgdGhlIG5ldyBmaWxlbmFtZQogICAgJFBhcmFte0ZpbGVuYW1lfSA9ICROZXdGaWxlTmFtZTsKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZW5jb2RlIGF0dGFjaG1lbnQgaWYgaXQncyBhIHBvc3RncmVzcWwgYmFja2VuZCEhIQogICAgaWYgKCAhJERCT2JqZWN0LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlT3V0cHV0KCBcJFBhcmFte0NvbnRlbnR9ICk7CgogICAgICAgICRQYXJhbXtDb250ZW50fSA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCggJFBhcmFte0NvbnRlbnR9ICk7CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfYXR0YWNobWVudCAnIC4KICAgICAgICAgICAgJyAoZmFxX2lkLCBmaWxlbmFtZSwgY29udGVudF90eXBlLCBjb250ZW50X3NpemUsIGNvbnRlbnQsIGlubGluZWF0dGFjaG1lbnQsICcgLgogICAgICAgICAgICAnIGNyZWF0ZWQsIGNyZWF0ZWRfYnksIGNoYW5nZWQsIGNoYW5nZWRfYnkpIFZBTFVFUyAnIC4KICAgICAgICAgICAgJyAoPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwgIFwkUGFyYW17RmlsZW5hbWV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwgXCRQYXJhbXtGaWxlc2l6ZX0sCiAgICAgICAgICAgIFwkUGFyYW17Q29udGVudH0sIFwkUGFyYW17SW5saW5lfSwgICBcJFBhcmFte1VzZXJJRH0sICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50IGlkCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBmYXFfaWQgPSA/IEFORCBmaWxlbmFtZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgY29udGVudF90eXBlID0gPyBBTkQgY29udGVudF9zaXplID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBpbmxpbmVhdHRhY2htZW50ID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyBBTkQgY2hhbmdlZF9ieSA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17RmlsZW5hbWV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwgXCRQYXJhbXtGaWxlc2l6ZX0sCiAgICAgICAgICAgIFwkUGFyYW17SW5saW5lfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEF0dGFjaG1lbnRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRBdHRhY2htZW50SUQ7Cn0KCj1oZWFkMiBBdHRhY2htZW50R2V0KCkKCmdldCBhdHRhY2htZW50IG9mIGFydGljbGUKCiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVGaWxlID0gKAogICAgICAgIEZpbGVzaXplICAgID0+ICc1NDAyODYnLCAgICAgICAgICAgICAgICAjIGZpbGUgc2l6ZSBpbiBieXRlcwogICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJyAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGJpbmFyeSBjb250ZW50CiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGNyZWF0ZWQnLAogICAgICAgIEJpbmQgICA9PiBbIFwkUGFyYW17RmlsZUlEfSwgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgRW5jb2RlID0+IFsgMSwgMSwgMSwgMCBdLAogICAgICAgIExpbWl0ICA9PiAxLAogICAgKTsKCiAgICBteSAlRmlsZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGRlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQgYW5kIG5vdCBCTE9CCiAgICAgICAgaWYgKCAhJERCT2JqZWN0LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgICAgICRSb3dbM10gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRSb3dbM10gKTsKICAgICAgICB9CgogICAgICAgICRGaWxle0ZpbGVuYW1lfSAgICA9ICRSb3dbMF07CiAgICAgICAgJEZpbGV7Q29udGVudFR5cGV9ID0gJFJvd1sxXTsKICAgICAgICAkRmlsZXtGaWxlc2l6ZX0gICAgPSAkUm93WzJdOwogICAgICAgICRGaWxle0NvbnRlbnR9ICAgICA9ICRSb3dbM107CiAgICB9CgogICAgcmV0dXJuICVGaWxlOwp9Cgo9aGVhZDIgQXR0YWNobWVudERlbGV0ZSgpCgpkZWxldGUgYXR0YWNobWVudCBvZiBhcnRpY2xlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgRmlsZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhdHRhY2htZW50IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfYXR0YWNobWVudCBXSEVSRSBpZCA9ID8gQU5EIGZhcV9pZCA9ID8gJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtGaWxlSUR9LCBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBdHRhY2htZW50SW5kZXgoKQoKcmV0dXJuIGFuIGF0dGFjaG1lbnQgaW5kZXggb2YgYW4gYXJ0aWNsZQoKICAgIG15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBTaG93SW5saW5lID0+IDAsICAgKCAwfDEsIGRlZmF1bHQgMSkKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBASW5kZXggPSAoCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTI3LjYgS0J5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gNTQwMjg2LAogICAgICAgICAgICBGaWxlSUQgICAgICA9PiA2LAogICAgICAgICAgICBJbmxpbmUgICAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgeywKICAgICAgICAgICAgRmlsZXNpemUgPT4gJzQzMC4wIEtCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ1NvbHV0aW9uLmpwZycsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDQ0MDI4NiwKICAgICAgICAgICAgRmlsZUlEID0+IDUsCiAgICAgICAgICAgIElubGluZSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSA9PiAnMjk2IEJ5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQWRkaXRpb25hbENvbW1lbnRzLnR4dCcsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDI5NiwKICAgICAgICAgICAgRmlsZUlEID0+IDcsCiAgICAgICAgICAgIElubGluZSA9PiAwLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRJbmRleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBmaWxlbmFtZSwgY29udGVudF90eXBlLCBjb250ZW50X3NpemUsIGlubGluZWF0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdGUk9NIGZhcV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGZpbGVuYW1lJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEwMCwKICAgICk7CgogICAgbXkgQEluZGV4OwogICAgQVRUQUNITUVOVDoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkSUQgICAgICAgICAgPSAkUm93WzBdOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICRSb3dbMV07CiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJFJvd1syXTsKICAgICAgICBteSAkRmlsZXNpemUgICAgPSAkUm93WzNdOwogICAgICAgIG15ICRJbmxpbmUgICAgICA9ICRSb3dbNF07CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTaG93SW5saW5lfSAmJiAhJFBhcmFte1Nob3dJbmxpbmV9ICYmICRJbmxpbmUgKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0byBodW1hbiByZWFkYWJsZSBmaWxlIHNpemUKICAgICAgICBteSAkRmlsZVNpemVSYXcgPSAkRmlsZXNpemU7CiAgICAgICAgaWYgKCRGaWxlc2l6ZSkgewogICAgICAgICAgICBpZiAoICRGaWxlc2l6ZSA+ICggMTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZXNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGaWxlc2l6ZSA+IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggKCAkRmlsZXNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9ICRGaWxlc2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJbmRleCwgewogICAgICAgICAgICBGaWxlSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXNpemUsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+ICRGaWxlU2l6ZVJhdywKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gJElubGluZSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBASW5kZXg7Cn0KCj1oZWFkMiBGQVFDb3VudCgpCgpDb3VudCB0aGUgbnVtYmVyIG9mIGFydGljbGVzIGZvciBhIGRlZmluZWQgY2F0ZWdvcnkuIE9ubHkgdmFsaWQgRkFRIGFydGljbGVzIHdpbGwgYmUgY291bnRlZC4KCiAgICBteSAkQXJ0aWNsZUNvdW50ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWzEsMiwzLDRdLAogICAgICAgIEl0ZW1TdGF0ZXMgPT4gIHsKICAgICAgICAgICAgMSA9PiAnaW50ZXJuYWwnLAogICAgICAgICAgICAyID0+ICdleHRlcm5hbCcsCiAgICAgICAgICAgIDMgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMSwgICAjIG9wdGlvbmFsIChkZWZhdWx0IDApCiAgICAgICAgVmFsaWQgICAgICAgID0+IDEsICAgIyBvcHRpb25hbCAoZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFydGljbGVDb3VudCA9IDM7Cgo9Y3V0CgpzdWIgRkFRQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEcyBJdGVtU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZQogICAgbXkgJFZhbGlkICAgID0gJFBhcmFte1ZhbGlkfSA/IDEgOiAwOwogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgbXkgJENhdGVnb3J5SURTdHJpbmcgPSAnJzsKICAgIGlmICggJFBhcmFte0NhdGVnb3J5SURzfSAmJiByZWYgJFBhcmFte0NhdGVnb3J5SURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBjYXRlZ29yeSBpZHMKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJERCT2JqZWN0LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFNvcnRlZElEcyA9IHNvcnQgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICAgICAjIHNwbGl0IElOIHN0YXRlbWVudCB3aXRoIG1vcmUgdGhhbiA5MDAgZWxlbWVudHMgaW4gbW9yZSBzdGF0ZW1lbnRzIGNvbWJpbmVkIHdpdGggT1IKICAgICAgICAjIGJlY2F1c2UgT3JhY2xlIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gMTAwMCBlbGVtZW50cyBpbiBvbmUgSU4gc3RhdGVtZW50LgogICAgICAgIG15IEBTUUxTdHJpbmdzOwogICAgICAgIExPT1A6CiAgICAgICAgd2hpbGUgKCBzY2FsYXIgQFNvcnRlZElEcyApIHsKCiAgICAgICAgICAgIG15IEBTb3J0ZWRJRHNQYXJ0ID0gc3BsaWNlIEBTb3J0ZWRJRHMsIDAsIDkwMDsKCiAgICAgICAgICAgIG15ICRJRFN0cmluZyA9IGpvaW4gJywnLCBAU29ydGVkSURzUGFydDsKCiAgICAgICAgICAgIHB1c2ggQFNRTFN0cmluZ3MsICIgaS5jYXRlZ29yeV9pZCBJTiAoJElEU3RyaW5nKSAiOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNRTFN0cmluZyA9IGpvaW4gJyBPUiAnLCBAU1FMU3RyaW5nczsKCiAgICAgICAgJENhdGVnb3J5SURTdHJpbmcgLj0gJ0FORCAoICcgLiAkU1FMU3RyaW5nIC4gJyApICc7CiAgICB9CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZzsKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgICAgICAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsIGtleXMgJVZhbGlkTGlzdDsKICAgIH0KCiAgICBteSAkU1FMID0gJ1NFTEVDVCBDT1VOVCgqKSAnCiAgICAgICAgLiAnRlJPTSBmYXFfaXRlbSBpLCBmYXFfc3RhdGUgcyAnCiAgICAgICAgLiAnV0hFUkUgaS5zdGF0ZV9pZCA9IHMuaWQgJwogICAgICAgIC4gIkFORCBpLnZhbGlkX2lkIElOICgkVmFsaWRJRHNTdHJpbmcpICIKICAgICAgICAuICRDYXRlZ29yeUlEU3RyaW5nOwoKICAgICMgY291bnQgb25seSBhcHByb3ZlZCBhcnRpY2xlcwogICAgaWYgKCAkUGFyYW17T25seUFwcHJvdmVkfSApIHsKICAgICAgICAkU1FMIC49ICcgQU5EIGkuYXBwcm92ZWQgPSAxJzsKICAgIH0KCiAgICBteSAkRXh0ID0gJyc7CiAgICBpZiAoICRQYXJhbXtJdGVtU3RhdGVzfSAmJiByZWYgJFBhcmFte0l0ZW1TdGF0ZXN9IGVxICdIQVNIJyAmJiAleyAkUGFyYW17SXRlbVN0YXRlc30gfSApIHsKICAgICAgICBteSAkU3RhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBrZXlzICV7ICRQYXJhbXtJdGVtU3RhdGVzfSB9OwogICAgICAgICRFeHQgLj0gIiBBTkQgcy50eXBlX2lkIElOICgkU3RhdGVzU3RyaW5nICkiOwogICAgfQogICAgJEV4dCAuPSAnIEdST1VQIEJZIGNhdGVnb3J5X2lkJzsKICAgICRTUUwgLj0gJEV4dDsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudCArPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1oZWFkMiBGQVFEZWxldGUoKQoKRGVsZXRlIGFuIGFydGljbGUuCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgSXRlbUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYXJ0aWNsZSBjb3VsZCBub3QgYmUgZGVsZXRlZAoKPWN1dAoKc3ViIEZBUURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBhdHRhY2htZW50cwogICAgbXkgQEluZGV4ID0gJFNlbGYtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIGZvciBteSAkRmlsZUlEIChASW5kZXgpIHsKICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRTZWxmLT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEZpbGVJRCA9PiAkRmlsZUlELT57RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJERlbGV0ZVN1Y2Nlc3M7CiAgICB9CgogICAgIyBkZWxldGUgdm90ZXMKICAgIG15ICRWb3RlSURzUmVmID0gJFNlbGYtPlZvdGVTZWFyY2goCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBmb3IgbXkgJFZvdGVJRCAoIEB7JFZvdGVJRHNSZWZ9ICkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPlZvdGVEZWxldGUoCiAgICAgICAgICAgIFZvdGVJRCA9PiAkVm90ZUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICEkRGVsZXRlU3VjY2VzczsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgRkFRIGxpbmtzIG9mIHRoaXMgRkFRIGFydGljbGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtEZWxldGVBbGwoCiAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGhpc3RvcnkKICAgIHJldHVybiBpZiAhJFNlbGYtPkZBUUhpc3RvcnlEZWxldGUoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgojIEZBUSBTZXJ2aWNlCiAgICAjIGRlbGV0ZSBhbGwgcmVsYXRlZCBzZXJ2aWNlcwogICAgbXkgJFNlcnZpY2VEYXRhQXJyYXlSZWYgPSAkU2VsZi0+RkFRU2VydmljZUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICApOwoKICAgIGZvciBteSAkU2VydmljZSAoIEB7JFNlcnZpY2VEYXRhQXJyYXlSZWZ9ICkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPkZBUVNlcnZpY2VEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlLT57U2VydmljZUlEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgISREZWxldGVTdWNjZXNzOwogICAgfQoKIyBlbyBGQVEgU2VydmljZQoKICAgICMgZGVsZXRlIGFydGljbGUKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9pdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJFNlbGYtPl9EZWxldGVGcm9tRkFRQ2FjaGUoJVBhcmFtKTsKCiAgICByZXR1cm4gMTsKfQoKIyMgRkFRIFNlcnZpY2UKCj1oZWFkMiBGQVFTZXJ2aWNlQWRkKCkKCmFkZCBzZXJ2aWNlcyB0byBhbiBhcnRpY2xlCgogICAgbXkgJEFkZFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFTZXJ2aWNlQWRkKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFNlcnZpY2VJRCA9PiAxLAogICAgICAgIE5hbWUgICA9PiAnU2VydmljZSBOYW1lJywKICAgICk7CgpSZXR1cm5zOgoKICAgICRBZGRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGFydGljbGUgc2VydmljZSBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBGQVFTZXJ2aWNlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIE5hbWUgU2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfc2VydmljZSAobmFtZSwgc2VydmljZV9pZCwgaXRlbV9pZCknIC4KICAgICAgICAgICAgJyBWQUxVRVMgKCA/LCA/LCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17U2VydmljZUlEfSwgXCRQYXJhbXtJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRU2VydmljZUdldCgpCgpnZXQgYW4gYXJyYXkgd2l0aCBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSBzZXJ2aWNlcyBvZiBhbiBhcnRpY2xlCgogICAgbXkgJFNlcnZpY2VEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFTZXJ2aWNlR2V0KAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFNlcnZpY2VEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgU2VydmljZUlEID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnQ29tcHV0ZXI6OkhhcmR3YXJlJywKICAgICAgICAgICAgU2VydmljZUlEID0+IDIsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRkFRU2VydmljZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBuYW1lLCBzZXJ2aWNlX2lkCiAgICAgICAgICAgIEZST00gZmFxX3NlcnZpY2UKICAgICAgICAgICAgV0hFUkUgaXRlbV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgbmFtZSwgc2VydmljZV9pZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKIyAkR2V0UGFyYW17U2VydmljZUxpc3R9ICAgICAgICAgPSBcJVNlcnZpY2VMaXN0OwoKICAgIG15IEBEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVJlY29yZCA9ICgKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkUm93WzFdLAogICAgICAgICk7CiAgICAgICAgcHVzaCBARGF0YSwgXCVSZWNvcmQ7CiAgICB9CgogICAgcmV0dXJuIFxARGF0YTsKCn0KCj1oZWFkMiBGQVFTZXJ2aWNlQXJ0aWNsZXNHZXQoKQoKZ2V0IGFuIGFycmF5IHdpdGggYXJ0aWNsZXMgcmVsYXRlZCB0byBhIHNlcnZpY2UKCiAgICBteSAkRkFRU2VydmljZUFydGljbGVzID0gJEZBUU9iamVjdC0+RkFRU2VydmljZUFydGljbGVzR2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAxLAogICAgICAgIExpbWl0ICAgICA9PiAxMCwgICAgIyBkZWZhdWx0IDEwCiAgICApOwoKUmV0dXJuczoKCiAgICAkRkFRU2VydmljZUFydGljbGVzID0gWyAxLCAyLCAzIF07CgoKPWN1dAoKc3ViIEZBUVNlcnZpY2VBcnRpY2xlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRMaW1pdCA9IDEwOwogICAgaWYgKCAkUGFyYW17TGltaXR9ICkgewogICAgICAgICRMaW1pdCA9ICRQYXJhbXtMaW1pdH07CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGl0ZW1faWQKICAgICAgICAgICAgRlJPTSBmYXFfc2VydmljZQogICAgICAgICAgICBXSEVSRSBzZXJ2aWNlX2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBpdGVtX2lkJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9IF0sCiAgICAgICAgTGltaXQgPT4gJExpbWl0LAogICAgKTsKCiAgICBteSBARGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQERhdGEsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxARGF0YTsKCn0KCgo9aGVhZDIgRkFRU2VydmljZURlbGV0ZSgpCgpkZWxldGUgdGhlIHNlcnZpY2Ugb2YgYW4gYXJ0aWNsZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRU2VydmljZURlbGV0ZSgKICAgICAgICBJdGVtSUQgICAgPT4gMSwKICAgICAgICBTZXJ2aWNlSUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBzZXJ2aWNlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRU2VydmljZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBTZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9zZXJ2aWNlIFdIRVJFIGl0ZW1faWQgPSA/IEFORCBzZXJ2aWNlX2lkID0gPyAnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17U2VydmljZUlEfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCiMjIGVvIEZBUSBTZXJ2aWNlCgo9aGVhZDIgRkFRSGlzdG9yeUFkZCgpCgphZGQgYW4gaGlzdG9yeSB0byBhbiBhcnRpY2xlCgogICAgbXkgJEFkZFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5QWRkKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIE5hbWUgICA9PiAnVXBkYXRlZCBBcnRpY2xlLicsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQWRkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhcnRpY2xlIGhpc3RvcnkgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2hpc3RvcnkgKG5hbWUsIGl0ZW1faWQsICcgLgogICAgICAgICAgICAnIGNyZWF0ZWQsIGNyZWF0ZWRfYnksIGNoYW5nZWQsIGNoYW5nZWRfYnkpJyAuCiAgICAgICAgICAgICcgVkFMVUVTICggPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17SXRlbUlEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBGQVFIaXN0b3J5R2V0KCkKCmdldCBhbiBhcnJheSB3aXRoIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICRIaXN0b3J5RGF0YUFycmF5UmVmID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUdldCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRIaXN0b3J5RGF0YUFycmF5UmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAnMjAxMC0xMS0wMiAwNzo0NToxNScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnQ3JlYXRlZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAxLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTEtMDYtMTQgMTI6NTM6NTUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1VwZGF0ZWQnLAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEZBUUhpc3RvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIG5hbWUsIGNyZWF0ZWQsIGNyZWF0ZWRfYnkKICAgICAgICAgICAgRlJPTSBmYXFfaGlzdG9yeQogICAgICAgICAgICBXSEVSRSBpdGVtX2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBjcmVhdGVkLCBpZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICBteSBARGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVSZWNvcmQgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbMl0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBEYXRhLCBcJVJlY29yZDsKICAgIH0KCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aGVhZDIgRkFRSGlzdG9yeURlbGV0ZSgpCgpkZWxldGUgdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVEdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBoaXN0b3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9oaXN0b3J5IFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRSm91cm5hbEdldCgpCgpnZXQgdGhlIHN5c3RlbSBqb3VybmFsCgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFKb3VybmFsR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEpvdXJuYWxEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJzMyJywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJ05ldyBBcnRpY2xlJywKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICc0JywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gIk5ldyBBcnRpY2xlIiwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdVcGRhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjU1OjMyJywKICAgICAgICB9CiAgICBdOwoKPWN1dAoKc3ViIEZBUUpvdXJuYWxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICBteSAlR3JvdXBzICAgICAgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Vc2VyR2V0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICk7CgogICAgcmV0dXJuIGlmICElR3JvdXBzOwoKICAgIG15IEBHcm91cElEcyAgICAgICAgICA9IGtleXMgJUdyb3VwczsKICAgIG15ICRHcm91cFBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgKCc/JykgeCBAR3JvdXBJRHM7CiAgICBteSBAR3JvdXBCaW5kICAgICAgICAgPSBtYXAgeyBcJF8gfSBAR3JvdXBJRHM7CgogICAgbXkgJENhdGVnb3J5U1FMID0KICAgICAgICAiU0VMRUNUIGcuY2F0ZWdvcnlfaWQKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cCBnCiAgICAgICAgV0hFUkUgZy5ncm91cF9pZCBJTiAoICRHcm91cFBsYWNlaG9sZGVycyApIjsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJENhdGVnb3J5U1FMLAogICAgICAgIEJpbmQgPT4gXEBHcm91cEJpbmQsCiAgICApOwoKICAgIG15IEBDYXRlZ29yeUlEczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENhdGVnb3J5SURzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhQENhdGVnb3J5SURzOwoKICAgIG15IEBCaW5kICAgICAgICAgICAgICAgICA9IG1hcCB7IFwkXyB9IEBDYXRlZ29yeUlEczsKICAgIG15ICRDYXRlZ29yeVBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgKCc/JykgeCBAQ2F0ZWdvcnlJRHM7CgogICAgIyBidWlsZCBTUUwgcXVlcnkKICAgIG15ICRTUUwgPQogICAgICAgICJTRUxFQ1QgaS5pZCwgaC5uYW1lLCBoLmNyZWF0ZWQsIGguY3JlYXRlZF9ieSwgYy5uYW1lLCBpLmZfc3ViamVjdCwgaS5mX251bWJlcgogICAgICAgIEZST00gZmFxX2l0ZW0gaQogICAgICAgICAgICBJTk5FUiBKT0lOIGZhcV9zdGF0ZSBzIE9OIHMuaWQgPSBpLnN0YXRlX2lkCiAgICAgICAgICAgIElOTkVSIEpPSU4gZmFxX2hpc3RvcnkgaCBPTiBoLml0ZW1faWQgPSBpLmlkCiAgICAgICAgICAgIElOTkVSIEpPSU4gZmFxX2NhdGVnb3J5IGMgT04gYy5pZCA9IGkuY2F0ZWdvcnlfaWQKICAgICAgICBXSEVSRSBjLmlkIElOICgkQ2F0ZWdvcnlQbGFjZWhvbGRlcnMpIjsKCiAgICAjIGFkZCBzdGF0ZXMgY29uZGl0aW9uCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtTdGF0ZXN9IH0gKSB7CiAgICAgICAgcHVzaCBAQmluZCwgbWFwIHsgXCRfIH0gQHsgJFBhcmFte1N0YXRlc30gfTsKICAgICAgICBteSAkU3RhdGVzU3RyaW5nID0gam9pbiAnLCAnLCAoJz8nKSB4IEB7ICRQYXJhbXtTdGF0ZXN9IH07CiAgICAgICAgJFNRTCAuPSAiQU5EIHMubmFtZSBJTiAoJFN0YXRlc1N0cmluZykgIjsKICAgIH0KCiAgICAjIGFkZCBvcmRlciBieSBjbGF1c2UKICAgICRTUUwgLj0gJ09SREVSIEJZIGguY3JlYXRlZCBERVNDJzsKCiAgICAjIGdldCB0aGUgZGF0YSBmcm9tIGRiCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICAgICBCaW5kICA9PiBcQEJpbmQsCiAgICApOwoKICAgIG15IEBEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVJlY29yZCA9ICgKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbM10sCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkUm93WzRdLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJFJvd1s1XSwKICAgICAgICAgICAgTnVtYmVyICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBEYXRhLCBcJVJlY29yZDsKICAgIH0KCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aGVhZDIgS2V5d29yZExpc3QoKQoKZ2V0IGEgbGlzdCBvZiBrZXl3b3JkcyBhcyBhIGhhc2gsIHdpdGggdGhlaXIgY291bnQgYXMgdGhlIHZhbHVlOgoKICAgIG15ICVLZXl3b3JkcyA9ICRGQVFPYmplY3QtPktleXdvcmRMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUtleXdvcmRzID0gKAogICAgICAgICAgJ21hY29zeCcgICA9PiA4LAogICAgICAgICAgJ3VidW50dScgICA9PiAxLAogICAgICAgICAgJ291dGxvb2snICA9PiAyLAogICAgICAgICAgJ3dpbmRvd3MnICA9PiAzLAogICAgICAgICAgJ2V4Y2hhbmdlJyA9PiAxLAogICAgKTsKCj1jdXQKCiMgVE9ETzogRnVuY3Rpb24gbm90IHVzZWQ/IEtleXdvcmQgc2VwYXJhdG9yIGlzIGhlcmUgYSBvdGhlciBhcyBhdCBvdGhlciBwbGFjZXMuLi4KIyBUT0RPOiBDbGFyaWZ5IC0gUmVtb3ZlIGZ1bmN0aW9uIG9yIGNoYW5nZSB0aGUgc2VwYXJhdG9yPwpzdWIgS2V5d29yZExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIG15ICRWYWxpZCA9IDA7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGtleXdvcmRzIGZyb20gZGIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGZfa2V5d29yZHMgRlJPTSBmYXFfaXRlbScsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRLZXl3b3JkTGlzdCA9IGxjICRSb3dbMF07CgogICAgICAgIGZvciBteSAkS2V5d29yZCAoIHNwbGl0IC8sLywgJEtleXdvcmRMaXN0ICkgewoKICAgICAgICAgICAgIyByZW1vdmUgbGVhZGluZy90YWlsaW5nIHNwYWNlcwogICAgICAgICAgICAkS2V5d29yZCA9fiBzeyBcQSBccysgfXt9eG1zZzsKICAgICAgICAgICAgJEtleXdvcmQgPX4gc3sgXHMrIFx6IH17fXhtc2c7CgogICAgICAgICAgICAjIGluY3JlYXNlIGtleXdvcmQgY291bnRlcgogICAgICAgICAgICAkRGF0YXskS2V5d29yZH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aGVhZDIgRkFRS2V5d29yZEFydGljbGVMaXN0KCkKCkdldCBhIGtleXdvcmQgYW5kIHJlbGF0ZWQgZmFxIGFydGljbGVzIGxvb2t1cCBsaXN0IChvcHRpb25hbCBvbmx5IGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2VzKS4KWW91IGNhbiBidWlsZCBhIGxpc3QgZm9yIGEgYWdlbnQgb3IgY3VzdG9tZXIuIElmIHlvdSBnaXZlIG9ubHkgYSBVc2VySUQgdGhlIHJlc3VsdCBpcyBmb3IKdGhlIGdpdmVuIFVzZXJJRCwgd2l0aCBhIGFkZGl0aW9uYWwgQ3VzdG9tZXJVc2VyIHRoZSBsaXN0IGlzIG9ubHkgZm9yIHRoZSBnaXZlbiBDdXN0b21lclVzZXIuCgogICAgbXkgJUZBUUtleXdvcmRBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPkZBUUtleXdvcmRBcnRpY2xlTGlzdCgKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3R0JywgICAgICAgICAgICMgb3B0aW9uYWwgKHdpdGggdGhpcyB0aGUgcmVzdWx0IGlzIG9ubHkgY3VzdG9tZXIgZmFxIGFydGljbGUpCiAgICAgICAgTGFuZ3VhZ2VzICAgID0+IFsgJ2VuJywgJ2RlJyBdLCAjIG9wdGlvbmFsCiAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsICAgICAjIG9wdGlvbmFsCiAgICApOwoKUmV0dXJucwoKICAgIG15ICVGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPSAoCiAgICAgICAgJ0V4YW1wbGVLZXl3b3JkJyA9PiBbCiAgICAgICAgICAgIDEyLAogICAgICAgICAgICAxMywKICAgICAgICBdLAogICAgICAgICdUZXN0S2V5d29yZCcgPT4gWwogICAgICAgICAgICA4NzYsCiAgICAgICAgXSwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRS2V5d29yZEFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBMYW5ndWFnZUlEczsKCiAgICBMQU5HVUFHRU5BTUU6CiAgICBmb3IgbXkgJExhbmd1YWdlTmFtZSAoIEB7ICRQYXJhbXtMYW5ndWFnZXN9IH0gKSB7CiAgICAgICAgbmV4dCBMQU5HVUFHRU5BTUUgaWYgISRMYW5ndWFnZU5hbWU7CgogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRMYW5ndWFnZU5hbWUsCiAgICAgICAgKTsKICAgICAgICBuZXh0IExBTkdVQUdFTkFNRSBpZiAhJExhbmd1YWdlSUQ7CgogICAgICAgIHB1c2ggQExhbmd1YWdlSURzLCAkTGFuZ3VhZ2VJRDsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkSW50ZXJmYWNlOwogICAgbXkgJFN0YXRlVHlwZXM7CiAgICBteSAkQ2F0ZWdvcnlJRHM7CgogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKCiAgICAgICAgJEludGVyZmFjZSA9ICdleHRlcm5hbCc7CgogICAgICAgICRTdGF0ZVR5cGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyk7CgogICAgICAgICRDYXRlZ29yeUlEcyA9ICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICBDdXN0b21lclVzZXIgICAgID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRJbnRlcmZhY2UgPSAnaW50ZXJuYWwnOwoKICAgICAgICAkU3RhdGVUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpOwoKICAgICAgICAkQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+QWdlbnRDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJENhdGVnb3J5SURzKTsKCiAgICBteSAkQ2FjaGVLZXkgPSAnRkFRS2V5d29yZEFydGljbGVMaXN0JzsKCiAgICBpZiAoQExhbmd1YWdlSURzKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICc6Okxhbmd1YWdlJyAuIGpvaW4gJzo6Jywgc29ydCBATGFuZ3VhZ2VJRHM7CiAgICB9CiAgICAkQ2FjaGVLZXkgLj0gJzo6Q2F0ZWdvcnlJRHMnIC4gam9pbiAnOjonLCBzb3J0IEB7JENhdGVnb3J5SURzfTsKICAgICRDYWNoZUtleSAuPSAnOjpJbnRlcmZhY2U6OicgLiAkSW50ZXJmYWNlOwogICAgaWYgKCAkUGFyYW17U2VydmljZUlEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJzo6U2VydmljZUlEOjonIC4gJFBhcmFte1NlcnZpY2VJRH07CiAgICB9CgogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAleyRDYWNoZX0gaWYgJENhY2hlOwoKICAgIG15ICVGQVFTZWFyY2hQYXJhbWV0ZXI7CgogICAgIyBTZXQgaW50ZXJmYWNlIHNldHRpbmcgdG8gJ2V4dGVybmFsJywgdG8gc2VhcmNoIG9ubHkgZm9yIGFwcHJvdmVkIGZhcSBhcnRpY2xlLgogICAgJEZBUVNlYXJjaFBhcmFtZXRlcntJbnRlcmZhY2V9ID0gJFNlbGYtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICRGQVFTZWFyY2hQYXJhbWV0ZXJ7U3RhdGVzfSA9ICRTZWxmLT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkU3RhdGVUeXBlcywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRTZWFyY2hMaW1pdCA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpLZXl3b3JkQXJ0aWNlTGlzdDo6U2VhcmNoTGltaXQnKTsKCiAgICBpZiAoQExhbmd1YWdlSURzKSB7CiAgICAgICAgJEZBUVNlYXJjaFBhcmFtZXRlcntMYW5ndWFnZUlEc30gPSBcQExhbmd1YWdlSURzOwogICAgfQogICAgCiAgICAjIEdldCB0aGUgcmVsZXZhbnQgRkFRIGFydGljbGUgZm9yIHRoZSBjdXJyZW50IGN1c3RvbWVyIHVzZXIuCiAgICBteSBARkFRQXJ0aWNsZUlEcyA9ICRTZWxmLT5GQVFTZWFyY2goCiAgICAgICAgJUZBUVNlYXJjaFBhcmFtZXRlciwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+ICRDYXRlZ29yeUlEcywKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnRkFRSUQnXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKIyBGQVEgU2VydmljZSBUT0RPCiAgICAgICAgU2VydmljZUlEICAgICAgICA9PiAkUGFyYW17U2VydmljZUlEfSwKIyBlbyBGQVEgU2VydmljZQogICAgKTsKCiAgICBteSAlS2V5d29yZEFydGljZUxpc3Q7CiAgICBteSAlTG9va3VwS2V5d29yZEFydGljbGVJRDsKCiAgICBGQVFBUlRJQ0xFSUQ6CiAgICBmb3IgbXkgJEZBUUFydGljbGVJRCAoQEZBUUFydGljbGVJRHMpIHsKCiAgICAgICAgbXkgJUZBUUFydGljbGVEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRGQVFBcnRpY2xlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEZBUUFSVElDTEVJRCBpZiAhJEZBUUFydGljbGVEYXRhe0tleXdvcmRzfTsKCiAgICAgICAgIyBSZXBsYWNlIGNvbW1hcyBhbmQgc2VtaWNvbG9ucywgYmVjYXVzZSB0aGUga2V5d29yZHMgYXJlIG5vcm1hbCBzcGxpdCB3aXRoIGFuIHdoaXRlc3BhY2UuCiAgICAgICAgJEZBUUFydGljbGVEYXRhe0tleXdvcmRzfSA9fiBzLywvIC9nOwogICAgICAgICRGQVFBcnRpY2xlRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sIGxjICRGQVFBcnRpY2xlRGF0YXtLZXl3b3Jkc307CgogICAgICAgIEtFWVdPUkQ6CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChAS2V5d29yZHMpIHsKCiAgICAgICAgICAgIG5leHQgS0VZV09SRCBpZiAkTG9va3VwS2V5d29yZEFydGljbGVJRHskS2V5d29yZH0tPnskRkFRQXJ0aWNsZUlEfTsKCiAgICAgICAgICAgIHB1c2ggQHsgJEtleXdvcmRBcnRpY2VMaXN0eyRLZXl3b3JkfSB9LCAkRkFRQXJ0aWNsZUlEOwoKICAgICAgICAgICAgJExvb2t1cEtleXdvcmRBcnRpY2xlSUR7JEtleXdvcmR9LT57JEZBUUFydGljbGVJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJUtleXdvcmRBcnRpY2VMaXN0LAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAzLAogICAgKTsKCiAgICByZXR1cm4gJUtleXdvcmRBcnRpY2VMaXN0Owp9Cgo9aGVhZDIgRkFRUGF0aExpc3RHZXQoKQoKcmV0dXJucyBhIGNhdGVnb3J5IGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFQYXRoTGlzdEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+IDE1MCwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAnMicsCiAgICAgICAgICAgIFBhcmVudElEID0+ICcwJywKICAgICAgICAgICAgTmFtZSA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBDb21tZW50ID0+ICdNeSBGaXJzdCBDYXRlZ29yeScsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJzEnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICc0JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gJzInLAogICAgICAgICAgICBOYW1lID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1RoaXMgSXMgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJzEnLAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEZBUVBhdGhMaXN0R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBAQ2F0ZWdvcnlMaXN0OwogICAgbXkgJFRlbXBDYXRlZ29yeUlEID0gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgd2hpbGUgKCRUZW1wQ2F0ZWdvcnlJRCkgewogICAgICAgIG15ICVEYXRhID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRUZW1wQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICglRGF0YSkgewogICAgICAgICAgICBwdXNoIEBDYXRlZ29yeUxpc3QsIFwlRGF0YTsKICAgICAgICB9CiAgICAgICAgJFRlbXBDYXRlZ29yeUlEID0gJERhdGF7UGFyZW50SUR9OwogICAgfQoKICAgIEBDYXRlZ29yeUxpc3QgPSByZXZlcnNlIEBDYXRlZ29yeUxpc3Q7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlMaXN0OwoKfQoKPWhlYWQyIEZBUUxvZ0FkZCgpCgphZGRzIGFjY2Vzc2VkIEZBUSBhcnRpY2xlIHRvIHRoZSBhY2Nlc3MgbG9nIHRhYmxlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICcxMjM0NTYnLAogICAgICAgIEludGVyZmFjZSA9PiAnaW50ZXJuYWwnLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPTE7ICAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgRkFRTG9nIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIEZBUUxvZ0FkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBJbnRlcmZhY2UgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICBteSAkSVAgICAgICAgID0gJEVOVnsnUkVNT1RFX0FERFInfSAgICAgfHwgJ05PTkUnOwogICAgbXkgJFVzZXJBZ2VudCA9ICRFTlZ7J0hUVFBfVVNFUl9BR0VOVCd9IHx8ICdOT05FJzsKCiAgICAjIERlZmluZSB0aW1lIHBlcmlvZCB3aGVuIHJlbG9hZHMgd2lsbCBub3QgYmUgbG9nZ2VkICgxMCBtaW51dGVzKS4KICAgIG15ICRSZWxvYWRCbG9ja1RpbWUgPSAxMCAqIDYwOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgJERhdGVUaW1lT2JqZWN0LT5TdWJ0cmFjdCggU2Vjb25kcyA9PiAkUmVsb2FkQmxvY2tUaW1lICk7CiAgICBteSAkVGltZVN0YW1wID0gJERhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgYSBsb2cgZW50cnkgZXhpc3RzIG5ld2VyIHRoYW4gdGhlIFJlbG9hZEJsb2NrVGltZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfbG9nICcKICAgICAgICAgICAgLiAnV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGlwID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCB1c2VyX2FnZW50ID0gPyBBTkQgY3JlYXRlZCA+PSA/ICcsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0sIFwkSVAsIFwkVXNlckFnZW50LCBcJFRpbWVTdGFtcCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFscmVhZHlFeGlzdHMgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEFscmVhZHlFeGlzdHMgPSAxOwogICAgfQoKICAgIHJldHVybiBpZiAkQWxyZWFkeUV4aXN0czsKCiAgICAjIGluc2VydCBuZXcgbG9nIGVudHJ5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfbG9nICcKICAgICAgICAgICAgLiAnKGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIHVzZXJfYWdlbnQsIGNyZWF0ZWQpIFZBTFVFUyAnCiAgICAgICAgICAgIC4gJyg/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17SW50ZXJmYWNlfSwgXCRJUCwgXCRVc2VyQWdlbnQsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBGQVFUb3AxMEdldCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIHRvcCAxMCBGQVEgYXJ0aWNsZSBpZHMuCgogICAgbXkgJFRvcDEwSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICAgICAgSW50ZXJmYWNlICAgPT4gJ3B1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCAyLCAzIF0sICAjIChvcHRpb25hbCkgT25seSBzaG93IHRoZSBUb3AtMTAgYXJ0aWNsZXMgZnJvbSB0aGVzZSBjYXRlZ29yaWVzCiAgICAgICAgTGltaXQgICAgICAgPT4gMTAsICAgICAgICAgICAjIChvcHRpb25hbCwgZGVmYXVsdCAxMCkKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFRvcDEwSURzUmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMTMsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE1OSwgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2aXNpdHMKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDYsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDc4LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gNCwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gNTksCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDIwLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAyOSwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDEsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDI0LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnZXh0ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxMSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMjQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDUsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE4LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnaW50ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA5LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxNiwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2V4dGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMiwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTQsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdpbnRlcm5hbCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMTQsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDYsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0KICAgIF07Cgo9Y3V0CgpzdWIgRkFRVG9wMTBHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJbnRlcmZhY2UgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgIyBwcmVwYXJlIFNRTAogICAgbXkgQEJpbmQ7CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpdGVtX2lkLCBjb3VudChpdGVtX2lkKSBhcyBpdGVtY291bnQsIGZhcV9zdGF0ZV90eXBlLm5hbWUsIGFwcHJvdmVkICcKICAgICAgICAuICdGUk9NIGZhcV9sb2csIGZhcV9pdGVtLCBmYXFfc3RhdGUsIGZhcV9zdGF0ZV90eXBlICcKICAgICAgICAuICdXSEVSRSBmYXFfbG9nLml0ZW1faWQgPSBmYXFfaXRlbS5pZCAnCiAgICAgICAgLiAnQU5EIGZhcV9pdGVtLnN0YXRlX2lkID0gZmFxX3N0YXRlLmlkICcKICAgICAgICAuICJBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykgIgogICAgICAgIC4gJ0FORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkICc7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBmaWx0ZXIganVzdCBjYXRlZ29yaWVzIHdpdGggYXQgbGVhc3Qgcm8gcGVybWlzc2lvbgogICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlJRHN9ICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIGNhdGVnb3J5IGlkcwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKICAgICAgICAgICAgJENhdGVnb3J5SUQgPSAkREJPYmplY3QtPlF1b3RlKCAkQ2F0ZWdvcnlJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICBteSBAU29ydGVkSURzID0gc29ydCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH07CgogICAgICAgICMgc3BsaXQgSU4gc3RhdGVtZW50IHdpdGggbW9yZSB0aGFuIDkwMCBlbGVtZW50cyBpbiBtb3JlIHN0YXRlbWVudHMgY29tYmluZWQgd2l0aCBPUgogICAgICAgICMgYmVjYXVzZSBPcmFjbGUgZG9lc24ndCBzdXBwb3J0IG1vcmUgdGhhbiAxMDAwIGVsZW1lbnRzIGluIG9uZSBJTiBzdGF0ZW1lbnQuCiAgICAgICAgbXkgQFNRTFN0cmluZ3M7CiAgICAgICAgTE9PUDoKICAgICAgICB3aGlsZSAoIHNjYWxhciBAU29ydGVkSURzICkgewoKICAgICAgICAgICAgbXkgQFNvcnRlZElEc1BhcnQgPSBzcGxpY2UgQFNvcnRlZElEcywgMCwgOTAwOwoKICAgICAgICAgICAgbXkgJElEU3RyaW5nID0gam9pbiAnLCcsIEBTb3J0ZWRJRHNQYXJ0OwoKICAgICAgICAgICAgcHVzaCBAU1FMU3RyaW5ncywgIiBmYXFfaXRlbS5jYXRlZ29yeV9pZCBJTiAoJElEU3RyaW5nKSAiOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNRTFN0cmluZyA9IGpvaW4gJyBPUiAnLCBAU1FMU3RyaW5nczsKCiAgICAgICAgJFNRTCAuPSAnIEFORCAoICcgLiAkU1FMU3RyaW5nIC4gJyApICc7CiAgICB9CgogICAgIyBmaWx0ZXIgcmVzdWx0cyBmb3IgcHVibGljIGFuZCBjdXN0b21lciBpbnRlcmZhY2UKICAgIGlmICggKCAkUGFyYW17SW50ZXJmYWNlfSBlcSAncHVibGljJyApIHx8ICggJFBhcmFte0ludGVyZmFjZX0gZXEgJ2V4dGVybmFsJyApICkgewoKICAgICAgICAjIG9ubHkgc2hvdyBhcHByb3ZlZCBhcnRpY2xlcwogICAgICAgICRTUUwgLj0gJ0FORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEgJzsKCiAgICAgICAgIyBvbmx5IHNob3cgdGhlIHB1YmxpYyBhcnRpY2xlcwogICAgICAgICRTUUwgLj0gIkFORCAoICggZmFxX3N0YXRlX3R5cGUubmFtZSA9ICdwdWJsaWMnIEFORCBmYXFfbG9nLmludGVyZmFjZSA9ICdwdWJsaWMnICkgIjsKCiAgICAgICAgIyBjdXN0b21lcnMgY2FuIGFkZGl0aW9uYWxseSBzZWUgdGhlIGV4dGVybmFsIGFydGljbGVzCiAgICAgICAgaWYgKCAkUGFyYW17SW50ZXJmYWNlfSBlcSAnZXh0ZXJuYWwnICkgewogICAgICAgICAgICAkU1FMIC49ICJPUiAoIGZhcV9zdGF0ZV90eXBlLm5hbWUgPSAnZXh0ZXJuYWwnIEFORCBmYXFfbG9nLmludGVyZmFjZSA9ICdleHRlcm5hbCcgKSAiOwogICAgICAgIH0KCiAgICAgICAgJFNRTCAuPSAnKSAnOwogICAgfQoKICAgICMgZmlsdGVyIHJlc3VsdHMgZm9yIGRlZmluZWQgdGltZSBwZXJpb2QKICAgIGlmICggJFBhcmFte1N0YXJ0RGF0ZX0gJiYgJFBhcmFte0VuZERhdGV9ICkgewogICAgICAgICRTUUwgLj0gJ0FORCBmYXFfbG9nLmNyZWF0ZWQgPj0gPyBBTkQgZmFxX2xvZy5jcmVhdGVkIDw9ID8gJzsKICAgICAgICBwdXNoIEBCaW5kLCAoIFwkUGFyYW17U3RhcnREYXRlfSwgXCRQYXJhbXtFbmREYXRlfSApOwogICAgfQoKICAgICMgY29tcGxldGUgU1FMIHN0YXRlbWVudAogICAgJFNRTCAuPSAnR1JPVVAgQlkgaXRlbV9pZCwgZmFxX3N0YXRlX3R5cGUubmFtZSwgYXBwcm92ZWQgJwogICAgICAgIC4gJ09SREVSIEJZIGl0ZW1jb3VudCBERVNDJzsKCiAgICAjIGdldCB0aGUgdG9wIDEwIGFydGljbGUgaWRzIGZyb20gZGF0YWJhc2UKICAgIHJldHVybiBbXSBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gXEBCaW5kLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0gfHwgMTAsCiAgICApOwoKICAgIG15IEBSZXN1bHQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBSZXN1bHQsIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvdW50ICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJFJvd1syXSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBcQFJlc3VsdDsKfQoKPWhlYWQyIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoKQoKVXBkYXRlcyB0aGUgVVJMcyBvZiB1cGxvYWRlZCBpbmxpbmUgYXR0YWNobWVudHMuCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIsCiAgICAgICAgRm9ybUlEICAgICA9PiA0NTYsCiAgICAgICAgRmlsZUlEICAgICA9PiA1LAogICAgICAgIEF0dGFjaG1lbnQgPT4gXCVBdHRhY2htZW50LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9mIHVuZGVmIGlmIGF0dGFjaG1lbnQgVVJMIGNvdWxkIG5vdCBiZSB1cGRhdGVkCgo9Y3V0CgpzdWIgRkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBBdHRhY2htZW50IEZvcm1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhdHRhY2htZW50IGlzIGEgaGFzaCByZWZlcmVuY2UKICAgIGlmICggcmVmICRQYXJhbXtBdHRhY2htZW50fSBuZSAnSEFTSCcgJiYgISV7ICRQYXJhbXtBdHRhY2htZW50fSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQXR0YWNobWVudCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBvbmx5IGNvbnNpZGVyIGlubGluZSBhdHRhY2htZW50cyBoZXJlICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgcmV0dXJuIDEgaWYgISRQYXJhbXtBdHRhY2htZW50fS0+e0NvbnRlbnRJRH07CgogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgcGljdHVyZSBVUkwgaW4gdXBsb2FkIGNhY2hlCiAgICBteSAkU2VhcmNoID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkIC4gRm9ybUlEPVxRJFBhcmFte0Zvcm1JRH1cRSAuICIKICAgICAgICAuICJDb250ZW50SUQ9XFEkUGFyYW17QXR0YWNobWVudH0tPntDb250ZW50SUR9XEUiOwoKICAgICMgcGljdHVyZSBVUkwgaW4gRkFRIGF0dGFjaG1lbnQKICAgIG15ICRSZXBsYWNlID0gIkFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDsiCiAgICAgICAgLiAiSXRlbUlEPSRQYXJhbXtJdGVtSUR9O0ZpbGVJRD0kUGFyYW17RmlsZUlEfSI7CgogICAgIyByZXdyaXRlIHBpY3R1cmUgVVJMcwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBjb250YWlucyBzb21ldGhpbmcKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXsiRmllbGQkTnVtYmVyIn07CgogICAgICAgICMgcmVtb3ZlIG5ld2xpbmVzCiAgICAgICAgJEZBUURhdGF7IkZpZWxkJE51bWJlciJ9ID1+IHN7IFtcblxyXSsgfXt9Z3htczsKCiAgICAgICAgIyByZXBsYWNlIFVSTAogICAgICAgICRGQVFEYXRheyJGaWVsZCROdW1iZXIifSA9fiBzeyRTZWFyY2h9eyRSZXBsYWNlfXhtczsKICAgIH0KCiAgICAjIHVwZGF0ZSBGQVEgYXJ0aWNsZSB3aXRob3V0IHdyaXRpbmcgYSBoaXN0b3J5IGVudHJ5CiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5GQVFVcGRhdGUoCiAgICAgICAgJUZBUURhdGEsCiAgICAgICAgSGlzdG9yeU9mZiAgPT4gMSwKICAgICAgICBBcHByb3ZhbE9mZiA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHVwZGF0ZSB3YXMgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIEZBUSBJdGVtIyAnJFBhcmFte0l0ZW1JRH0nISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRQXJ0aWNsZVRpdGxlQ2xlYW4oKQoKc3RyaXAvY2xlYW4gdXAgYSBGQVEgYXJ0aWNsZSB0aXRsZQoKICAgIG15ICROZXdUaXRsZSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgIFRpdGxlICAgICAgPT4gJE9sZFRpdGxlLAogICAgICAgIFNpemUgICAgICAgPT4gJFRpdGxlU2l6ZVRvQmVEaXNwbGF5ZWQgICAjIG9wdGlvbmFsLCBpZiAwIGRvIG5vdCBjdXQgdGl0bGUKICAgICk7Cgo9Y3V0CgpzdWIgRkFRQXJ0aWNsZVRpdGxlQ2xlYW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGl0bGUgPSAkUGFyYW17VGl0bGV9IHx8ICcnOwoKICAgICMgZ2V0IGNvbmZpZyBvcHRpb25zCiAgICBteSAkVGl0bGVTaXplID0gJFBhcmFte1NpemV9OwogICAgaWYgKCAhZGVmaW5lZCAkVGl0bGVTaXplICkgewogICAgICAgICRUaXRsZVNpemUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6VGl0bGVTaXplJykgfHwgMTAwOwogICAgfQoKICAgICMgdHJpbSB3aGl0ZSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZAogICAgJFRpdGxlID1+IHMvKF5ccyt8XHMrJCkvLzsKCiAgICAjIHJlc2l6ZSB0aXRsZSBiYXNlZCBvbiBjb25maWcKICAgICMgZG8gbm90IGN1dCB0aXRsZSwgaWYgc2l6ZSBwYXJhbWV0ZXIgd2FzIDAKICAgIGlmICgkVGl0bGVTaXplKSB7CiAgICAgICAgJFRpdGxlID1+IHMvXigueyRUaXRsZVNpemV9KS4qJC8kMSBbLi4uXS87CiAgICB9CgogICAgcmV0dXJuICRUaXRsZTsKfQoKPWhlYWQyIEZBUUNvbnRlbnRUeXBlU2V0KCkKClNldHMgdGhlIGNvbnRlbnQgdHlwZSBvZiAxLCBzb21lIG9yIGFsbCBGQVEgaXRlbXMsIGJ5IGEgZ2l2ZW4gcGFyYW1ldGVyIG9yIGRldGVybWluZWQgYnkgdGhlIEZBUSBpdGVtIGNvbnRlbnQKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUNvbnRlbnRUeXBlU2V0KAogICAgICAgIEZBUUl0ZW1JRHMgID0+IFsgMSwgMiwgMyBdLCAgICAgICAgICAgICAjIG9wdGlvbmFsLAogICAgICAgIENvbnRlbnRUeXBlID0+ICdzb21lIGNvbnRlbnQgdHlwZScsICAgICAjIG9wdGlvbmFsLAogICAgKTsKCj1jdXQKCnN1YiBGQVFDb250ZW50VHlwZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggJFBhcmFte0ZBUUl0ZW1JRHN9ICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtGQVFJdGVtSURzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBGQVFJdGVtSURzIGZvcm1hdCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkQ29udGVudFR5cGUgPSAkUGFyYW17Q29udGVudFR5cGV9IHx8ICcnOwoKICAgICMgR2V0IGRlZmF1bHQgY29udGVudCB0eXBlIGZyb20gdGhlIGNvbmZpZyBpZiBpdCB3YXMgbm90IGdpdmVuLgogICAgaWYgKCAhJENvbnRlbnRUeXBlICkgewoKICAgICAgICAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnOwogICAgICAgIH0KICAgIH0KCiAgICAjIFNRTCB0byBzZXQgdGhlIGNvbnRlbnQgdHlwZSAoZGVmYXVsdCBvciBnaXZlbikuCiAgICBteSAkU1FMID0gJwogICAgICAgIFVQREFURSBmYXFfaXRlbQogICAgICAgIFNFVCBjb250ZW50X3R5cGUgPSA/JzsKCiAgICAjIEdldCBGQVEgaXRlbSBJRHMgZnJvbSB0aGUgcGFyYW0uCiAgICBteSBARkFRSXRlbUlEcyA9IEB7ICRQYXJhbXtGQVFJdGVtSURzfSAvLyBbXSB9OwoKICAgICMgUmVzdHJpY3QgdG8gb25seSBnaXZlbiBGQVEgaXRlbSBJRHMgKGlmIGFueSkuCiAgICBpZiAoQEZBUUl0ZW1JRHMpIHsKCiAgICAgICAgbXkgJElEU3RyaW5nID0gam9pbiAnLCcsIEBGQVFJdGVtSURzOwoKICAgICAgICAkU1FMIC49ICIKICAgICAgICAgICAgV0hFUkUgaWQgSU4gKCRJRFN0cmluZykiOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU2V0IHRoZSBjb250ZW50IHR5cGUgZWl0aGVyIGJ5IHRoZSBnaXZlbiBwYXJhbSBvciBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSBzZXR0aW5ncy4KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkQ29udGVudFR5cGUsCiAgICAgICAgXSwKICAgICk7CgogICAgIyBObyBuZWVkIHRvIGdvIGZ1cnRoZXIgaWYgY29udGVudCB0eXBlIHdhcyBnaXZlbiAoaXQgd2FzIGFscmVhZHkgc2V0KS4KICAgIGlmICggJFBhcmFte0NvbnRlbnRUeXBlfSApIHsKCiAgICAgICAgIyBEZWxldGUgY2FjaGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIE90aGVyd2lzZSBjb250ZW50IHR5cGUgaGFzIHRvIGJlIGRldGVybWluZWQgYnkgdGhlIEZBUSBpdGVtIGNvbnRlbnQuCgogICAgIyBHZXQgYWxsIEZBUUlEcyAoaWYgbm8gZmFxIGl0ZW0gd2FzIGdpdmVuKS4KICAgIGlmICggIUBGQVFJdGVtSURzICkgewogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIERJU1RJTkNUKGZhcV9pdGVtLmlkKQogICAgICAgICAgICAgICAgRlJPTSBmYXFfaXRlbQogICAgICAgICAgICAgICAgT1JERVIgQlkgaWQgQVNDJywKICAgICAgICApOwoKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgcHVzaCBARkFRSXRlbUlEcywgJFJvd1swXTsKICAgICAgICB9CiAgICB9CgogICAgIyBMb29wIHRyb3VnaCB0aGUgRkFRIGl0ZW1zLgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKEBGQVFJdGVtSURzKSB7CiAgICAgICAgbXkgJERldGVybWluZWRDb250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJzsKCiAgICAgICAgIyBHZXQgdGhlIGNvbnRlbnRzIG9mIGVhY2ggZmllbGQKICAgICAgICBGSUVMRDoKICAgICAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKCiAgICAgICAgICAgIG15ICRGaWVsZENvbnRlbnQgPSAkU2VsZi0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBGaWVsZCAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGRDb250ZW50OwoKICAgICAgICAgICAgIyBpZiBmaWVsZCBjb250ZW50IHNlYW1zIHRvIGJlIEhUTUwgc2V0IHRoZSBjb250ZW50IHR5cGUgdG8gSFRNTAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRmllbGRDb250ZW50CiAgICAgICAgICAgICAgICA9fiBteyg/OiA8YnJccyovPiB8IDwvbGk+IHwgPC9vbD4gfCA8L3VsPiB8IDwvdGFibGU+IHwgPC90cj4gfCA8L3RkPiB8IDwvZGl2PiB8IDwvbz4gfCA8L2k+IHwgPC9zcGFuPiB8IDwvaFxkPiB8IDwvcD4gfCA8L3ByZT4gKX1tc3gKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJERldGVybWluZWRDb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnOwogICAgICAgICAgICAgICAgbGFzdCBGSUVMRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbmV4dCBJVEVNSUQgaWYgJERldGVybWluZWRDb250ZW50VHlwZSBlcSAkQ29udGVudFR5cGU7CgogICAgICAgICMgU2V0IHRoZSBjb250ZW50IHR5cGUgYWNjb3JkaW5nIHRvIHRoZSBmaWVsZCBjb250ZW50LgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFVQREFURSBmYXFfaXRlbQogICAgICAgICAgICAgICAgU0VUIGNvbnRlbnRfdHlwZSA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJERldGVybWluZWRDb250ZW50VHlwZSwKICAgICAgICAgICAgICAgIFwkSXRlbUlELAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBEZWxldGUgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgREVQUkVDQVRFRCBGVU5DVElPTlMKCj1oZWFkMiBIaXN0b3J5R2V0KCkKCkRlcHJlY2F0ZWQsIHVzZSBGQVFKb3VybmFsR2V0KCkgaW5zdGVhZC4KCj1jdXQKCnN1YiBIaXN0b3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5GQVFKb3VybmFsR2V0KCVQYXJhbSk7Cn0KCj1oZWFkMSBQUklWQVRFIEZVTkNUSU9OUwoKPWhlYWQyIF9GQVFBcHByb3ZhbFVwZGF0ZSgpCgp1cGRhdGUgdGhlIGFwcHJvdmFsIHN0YXRlIG9mIGFuIGFydGljbGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPl9GQVFBcHByb3ZhbFVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBBcHByb3ZlZCAgID0+IDEsICAgICMgMHwxIChkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfRkFRQXBwcm92YWxVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17QXBwcm92ZWR9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQXBwcm92ZWQgcGFyYW1ldGVyIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgdXBkYXRlIGRhdGFiYXNlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBmYXFfaXRlbSBTRVQgJwogICAgICAgICAgICAuICdhcHByb3ZlZCA9ID8sICcKICAgICAgICAgICAgLiAnY2hhbmdlZCA9IGN1cnJlbnRfdGltZXN0YW1wLCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWRfYnkgPSA/ICcKICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtBcHByb3ZlZH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgYXBwcm92YWwgZmVhdHVyZSBpcyBhY3RpdmF0ZWQgYW5kIEZBUSBhcnRpY2xlIGlzIG5vdCBhcHByb3ZlZCB5ZXQKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSAmJiAhJFBhcmFte0FwcHJvdmVkfSApIHsKCiAgICAgICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkRkFRRGF0YXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgRkFRTnVtYmVyICA9PiAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICBUaXRsZSAgICAgID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICAgICAgU3RhdGVJRCAgICA9PiAkRkFRRGF0YXtTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBjcmVhdGUgYXBwcm92YWwgdGlja2V0IScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKCkKCmNyZWF0ZXMgYW4gYXBwcm92YWwgdGlja2V0CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5fRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBGQVFOdW1iZXIgID0+IDEwMjExLAogICAgICAgIFRpdGxlICAgICAgPT4gJ1NvbWUgVGl0bGUnLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIF9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBDYXRlZ29yeUlEIEZBUU51bWJlciBUaXRsZSBTdGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgc3ViamVjdAogICAgbXkgJFN1YmplY3QgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRTdWJqZWN0Jyk7CiAgICAkU3ViamVjdCA9fiBzeyA8T1RPQk9fRkFRX05VTUJFUj4gfXskUGFyYW17RkFRTnVtYmVyfX14bXM7CgogICAgIyBjaGVjayBpZiB3ZSBjYW4gZmluZCBleGlzdGluZyBvcGVuIGFwcHJvdmFsIHRpY2tldHMgZm9yIHRoaXMgRkFRIGFydGljbGUKICAgIG15IEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgUmVzdWx0ICAgID0+ICdBUlJBWScsCiAgICAgICAgVGl0bGUgICAgID0+ICRTdWJqZWN0LAogICAgICAgIFN0YXRlVHlwZSA9PiAnT3BlbicsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBhcHByb3ZhbCB0aWNrZXQgaWYgdGhlcmUgaXMgc3RpbGwgYXQgbGVhc3Qgb25lIHRpY2tldCBvcGVuCiAgICAjIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICByZXR1cm4gMSBpZiBAVGlja2V0SURzOwoKICAgICMgZ2V0IHRpY2tldCB0eXBlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkVGlja2V0VHlwZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFR5cGUnKSB8fCAnJzsKCiAgICAjIHZhbGlkYXRlIHRpY2tldCB0eXBlIGlmIGFueQogICAgaWYgKCRUaWNrZXRUeXBlKSB7CgogICAgICAgICMgZ2V0IGEgdGlja2V0IHR5cGUgbG9va3VwIHRhYmxlCiAgICAgICAgbXkgJVR5cGVMaXN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgpOwogICAgICAgIG15ICVUeXBlTG9va3VwID0gcmV2ZXJzZSAlVHlwZUxpc3Q7CgogICAgICAgICMgc2V0ICRUaWNrZXRUeXBlIHRvIGVtcHR5IGlmIFRpY2tleVR5cGUgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBsb29rdXAgdGFibGUuIElmIHNldCB0bwogICAgICAgICMgICAgZW1wdHkgVGlja2V0Q3JlYXRlKCkgd2lsbCB1c2UgYXMgZGVmYXVsdCBUeXBlSUQgPSAxLCBubyBtYXR0ZXIgaWYgaXQgaXMgdmFsaWQgb3Igbm90LgogICAgICAgICRUaWNrZXRUeXBlID0gJFR5cGVMb29rdXB7JFRpY2tldFR5cGV9ID8gJFRpY2tldFR5cGUgOiAnJzsKICAgIH0KCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgPT4gJFN1YmplY3QsCiAgICAgICAgUXVldWUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnUmF3JywKICAgICAgICBMb2NrICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRQcmlvcml0eScpIHx8ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlJykgfHwgJ25ldycsCiAgICAgICAgVHlwZSAgICAgPT4gJFRpY2tldFR5cGUsCiAgICAgICAgT3duZXJJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICBpZiAoJFRpY2tldElEKSB7CgogICAgICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVN0YXRlID0gJFNlbGYtPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNhdGVnb3JpZXMgY2FuIGJlIG5lc3RlZDsgeW91IGNhbiBoYXZlIHNvbWU6Omxvbmc6OmNhdGVnb3J5LgogICAgICAgIG15IEBDYXRlZ29yeU5hbWVzOwogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgICAgIENBVEVHT1JZOgogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnl7TmFtZX07CiAgICAgICAgICAgIGxhc3QgQ0FURUdPUlkgaWYgISRDYXRlZ29yeXtQYXJlbnRJRH07CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJENhdGVnb3J5e1BhcmVudElEfTsKICAgICAgICB9CiAgICAgICAgbXkgJENhdGVnb3J5ID0gam9pbiggJzo6JywgcmV2ZXJzZSBAQ2F0ZWdvcnlOYW1lcyApOwoKICAgICAgICBteSAkTGFuZ3VhZ2U7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpICkgewogICAgICAgICAgICAkTGFuZ3VhZ2UgPSAkU2VsZi0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYW5ndWFnZSA9ICctJzsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGJvZHkgZnJvbSBjb25maWcKICAgICAgICBteSAkQm9keSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldEJvZHknKTsKICAgICAgICAkQm9keSA9fiBzeyA8T1RPQk9fRkFRX0NBVEVHT1JZSUQ+IH17JFBhcmFte0NhdGVnb3J5SUR9fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RPQk9fRkFRX0NBVEVHT1JZPiAgIH17JENhdGVnb3J5fXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RPQk9fRkFRX0xBTkdVQUdFPiAgIH17JExhbmd1YWdlfXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RPQk9fRkFRX0lURU1JRD4gICAgIH17JFBhcmFte0l0ZW1JRH19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVE9CT19GQVFfTlVNQkVSPiAgICAgfXskUGFyYW17RkFRTnVtYmVyfX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UT0JPX0ZBUV9USVRMRT4gICAgICB9eyRQYXJhbXtUaXRsZX19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVE9CT19GQVFfQVVUSE9SPiAgICAgfXskVXNlck5hbWV9eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVE9CT19GQVFfU1RBVEU+ICAgICAgfXskU3RhdGV7TmFtZX19eG1zOwoKICAgICAgICBteSAlVXNlciA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGZyb20gc3RyaW5nCiAgICAgICAgbXkgJEZyb20gPSAiXCIkVXNlcntVc2VyRnVsbG5hbWV9XCIgPCRVc2Vye1VzZXJFbWFpbH0+IjsKCiAgICAgICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICAgICAgbXkgJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKCiAgICAgICAgbXkgJEFydGljbGVJRCA9ICRJbnRlcm5hbEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDAsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICRGcm9tLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkU3ViamVjdCwKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJEJvZHksCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+CiAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Tm90ZScpLT57SGlzdG9yeVR5cGV9CiAgICAgICAgICAgICAgICB8fCAnQWRkTm90ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+CiAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Tm90ZScpLT57SGlzdG9yeUNvbW1lbnR9CiAgICAgICAgICAgICAgICB8fCAnJSVOb3RlJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJEFydGljbGVJRDsKICAgIH0KCiAgICByZXR1cm47Cn0KCiMKIyBEZWxldGVzIGFsbCBuZWVkZWQgRkFRIGl0ZW0gY2FjaGUgZW50cmllcyBmb3IgYSBnaXZlbiBGQVEgSXRlbUlELgojCnN1YiBfRGVsZXRlRnJvbUZBUUNhY2hlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAjIENsZWFyIEZBUUdldCBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6MScsCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6MCcsCiAgICApOwoKICAgICMgQ2xlYXIgSXRlbUZlbGRHZXQgY2FjaGUKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAnSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OicgLiAkUGFyYW17SXRlbUlEfSwKICAgICk7CgogICAgIyBDbGVhbnVwIGNhY2hlIGZvciB0aGUgJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcuCiAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUVNlYXJjaCAtIEZBUSBzZWFyY2ggbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgc2VhcmNoIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgRkFRU2VhcmNoKCkKCnNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMKCiAgICBteSBASURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAoKICAgICAgICBOdW1iZXIgICAgPT4gJyoxMzQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFRpdGxlICAgICA9PiAnKnNvbWUgdGl0bGUqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICMgaXMgc2VhcmNoaW5nIGluIE51bWJlciwgVGl0bGUsIEtleXdvcmQgYW5kIEZpZWxkMS02CiAgICAgICAgV2hhdCAgICAgID0+ICcqc29tZSB0ZXh0KicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgS2V5d29yZCAgID0+ICcqd2Vic2VydmVyKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTdGF0ZXMgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAxID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIDIgPT4gJ2V4dGVybmFsJywKICAgICAgICB9LAogICAgICAgIExhbmd1YWdlSURzID0+IFsgNCwgNSwgNiBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyA3LCA4LCA5IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBWYWxpZElEcyAgICA9PiBbIDEsIDIsIDMgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSAoZGVmYXVsdCAxKQoKICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIEFwcHJvdmVkCiAgICAgICAgIyAgICBPbmx5IGF2YWlsYWJsZSBpbiBpbnRlcm5hbCBpbnRlcmZhY2UgKGFnZW50IGludGVyZmFjZSkKICAgICAgICBBcHByb3ZlZCAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSAxIG9yIDAsCgogICAgICAgICMgVm90ZXMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWzEyMywgNjU0XQogICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDEyMywKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gMTIzLAogICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAxMjMsCiAgICAgICAgfQoKICAgICAgICAjIFJhdGUKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWzUwLCA3NV0KICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gNzUsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDc1LAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiA3NSwKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gNzUsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDc1LAogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgRkFRIGl0ZW0gcHJvcGVydGllcyAob3B0aW9uYWwpCiAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gWzEsIDEyLCA0NTUsIDMyXQoKICAgICAgICAjIGNoYW5nZSBGQVEgaXRlbSBwcm9wZXJ0aWVzIChvcHRpb25hbCkKICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWzEsIDEyLCA0NTUsIDMyXQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkLWNhcmQgc3VwcG9ydAogICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgfQoKICAgICAgICAjIEZBUSBpdGVtcyBjcmVhdGVkIG1vcmUgdGhhbiA2MCBtaW51dGVzIGFnbyAoaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBGQVEgaXRlbSBjcmVhdGVkIGxlc3MgdGhhbiAxMjAgbWludXRlcyBhZ28gKGl0ZW0gbmV3ZXIgdGhhbiAxMjAgbWludXRlcykgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzID0+IDEyMCwKCiAgICAgICAgIyBGQVEgaXRlbXMgd2l0aCBjcmVhdGUgdGltZSBhZnRlciAuLi4gKGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBGQVEgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoaXRlbSBvbGRlciB0aGFuIHRoaXMgZGF0ZSkgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDA2LTAxLTE5IDIzOjU5OjU5JywKCiAgICAgICAgIyBGQVEgaXRlbXMgY2hhbmdlZCBtb3JlIHRoYW4gNjAgbWludXRlcyBhZ28gKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzID0+IDYwLAogICAgICAgICMgRkFRIGl0ZW1zIGNoYW5nZWQgbGVzcyB0aGFuIDEyMCBtaW51dGVzIGFnbyAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIEZBUSBpdGVtIHdpdGggY2hhbmdlZCB0aW1lIGFmdGVyIC4uLiAoaXRlbSBjaGFuZ2VkIG5ld2VyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgRkFRIGl0ZW0gd2l0aCBjaGFuZ2VkIHRpbWUgYmVmb3JlIC4uLiAoaXRlbSBjaGFuZ2VkIG9sZGVyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnRkFRSUQnIF0sCiAgICAgICAgIyAoRkFRSUQsIE51bWJlciwgVGl0bGUsIExhbmd1YWdlLCBDYXRlZ29yeSwgVmFsaWQsIENyZWF0ZWQsCiAgICAgICAgIyBDaGFuZ2VkLCBTdGF0ZSwgVm90ZXMsIFJlc3VsdCkKCiAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGV4ZXMuCgogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAnRG93bicsICdVcCcgXSwgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdVUCcgXQogICAgICAgICMgKERvd24gfCBVcCkKCiAgICAgICAgTGltaXQgICAgID0+IDE1MCwKCiAgICAgICAgSW50ZXJmYWNlID0+IHsgICAgICAgICAgICAgICMgKGRlZmF1bHQgaW50ZXJuYWwpCiAgICAgICAgICAgIFN0YXRlSUQgPT4gMywKICAgICAgICAgICAgTmFtZSAgICA9PiAncHVibGljJywgICAgIyBwdWJsaWMgfCBleHRlcm5hbCB8IGludGVybmFsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIEBJRHMgPSAoCiAgICAgICAgMzIsCiAgICAgICAgMTMsCiAgICAgICAgMTIsCiAgICAgICAgOSwKICAgICAgICA2LAogICAgICAgIDUsCiAgICAgICAgNCwKICAgICAgICAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlCiAgICBpZiAoICEkUGFyYW17SW50ZXJmYWNlfSB8fCAhJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSApIHsKICAgICAgICAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9ID0gJ2ludGVybmFsJzsKICAgIH0KCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5IHJlZmVyZW5jZQogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPcmRlckJ5IE9yZGVyQnlEaXJlY3Rpb24pKSB7CgogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRQYXJhbXskQXJndW1lbnR9IHx8PSBbXTsKCiAgICAgICAgICAgIG5leHQgQVJHVU1FTlQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFyZ3VtZW50fSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEFyZ3VtZW50IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIG9yZGVyIHRhYmxlCiAgICBteSAlT3JkZXJCeVRhYmxlID0gKAoKICAgICAgICAjIEZBUSBpdGVtIGF0dHJpYnV0ZXMKICAgICAgICBGQVFJRCAgICA9PiAnaS5pZCcsCiAgICAgICAgTnVtYmVyICAgPT4gJ2kuZl9udW1iZXInLAogICAgICAgIFRpdGxlICAgID0+ICdpLmZfc3ViamVjdCcsCiAgICAgICAgTGFuZ3VhZ2UgPT4gJ2kuZl9sYW5ndWFnZV9pZCcsCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ2kuY2F0ZWdvcnlfaWQnLAogICAgICAgIFZhbGlkICAgID0+ICdpLnZhbGlkX2lkJywKICAgICAgICBDcmVhdGVkICA9PiAnaS5jcmVhdGVkJywKICAgICAgICBDaGFuZ2VkICA9PiAnaS5jaGFuZ2VkJywKCiAgICAgICAgIyBTdGF0ZSBhdHRyaWJ1dGVzCiAgICAgICAgU3RhdGUgPT4gJ3MubmFtZScsCgogICAgICAgICMgVm90ZSBhdHRyaWJ1dGVzCiAgICAgICAgVm90ZXMgID0+ICd2b3RlcycsCiAgICAgICAgUmVzdWx0ID0+ICd2cmF0ZScsCiAgICApOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBxdW90ZSBpZCBhcnJheSBlbGVtZW50cwogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEtleSAocXcoTGFuZ3VhZ2VJRHMgQ2F0ZWdvcnlJRHMgVmFsaWRJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKSkgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgISRQYXJhbXskS2V5fTsKCiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17JEtleX0gKSApIHsKCiAgICAgICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRLZXknIGlzIGludmFsaWQgb3IgYW4gZW1wdHkgYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHF1b3RlIGVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggQHsgJFBhcmFteyRLZXl9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJERCT2JqZWN0LT5RdW90ZSggJEVsZW1lbnQsICdJbnRlZ2VyJyApICkgewoKICAgICAgICAgICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRFbGVtZW50JyBpbiAnJEtleScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkRkFRRHluYW1pY0ZpZWxkcyA9IFtdOwogICAgbXkgJVZhbGlkRHluYW1pY0ZpZWxkUGFyYW1zOwogICAgbXkgJUZBUUR5bmFtaWNGaWVsZE5hbWUyQ29uZmlnOwoKICAgICMgT25seSBmZXRjaCBEeW5hbWljRmllbGQgZGF0YSBpZiBhIGZpZWxkIHdhcyByZXF1ZXN0ZWQgZm9yIHNlYXJjaGluZyBvciBzb3J0aW5nCiAgICBteSAkUGFyYW1DaGVja1N0cmluZyA9ICggam9pbiAnJywga2V5cyAlUGFyYW0gKSB8fCAnJzsKCiAgICBpZiAoIHJlZiAkUGFyYW17T3JkZXJCeX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAkUGFyYW1DaGVja1N0cmluZyAuPSAoIGpvaW4gJycsIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICk7CiAgICB9CiAgICBlbHNpZiAoIHJlZiAkUGFyYW17T3JkZXJCeX0gbmUgJ0hBU0gnICkgewogICAgICAgICRQYXJhbUNoZWNrU3RyaW5nIC49ICRQYXJhbXtPcmRlckJ5fSB8fCAnJzsKICAgIH0KCiAgICBpZiAoICRQYXJhbUNoZWNrU3RyaW5nID1+IG0vRHluYW1pY0ZpZWxkXy9zbXggKSB7CgogICAgICAgICMgQ2hlY2sgYWxsIGNvbmZpZ3VyZWQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICAgICAgJEZBUUR5bmFtaWNGaWVsZHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyRGQVFEeW5hbWljRmllbGRzfSApIHsKICAgICAgICAgICAgJFZhbGlkRHluYW1pY0ZpZWxkUGFyYW1zeyAiRHluYW1pY0ZpZWxkXyIgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgICRGQVFEeW5hbWljRmllbGROYW1lMkNvbmZpZ3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnkgY29udGFpbnMgb25seSB1bmlxdWUgdmFsaWQgdmFsdWVzCiAgICBteSAlT3JkZXJCeVNlZW47CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAhJE9yZGVyQnkKICAgICAgICAgICAgfHwgKCAhJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gJiYgISRWYWxpZER5bmFtaWNGaWVsZFBhcmFtc3skT3JkZXJCeX0gKQogICAgICAgICAgICB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5IGNvbnRhaW5zIGludmFsaWQgdmFsdWUgJyRPcmRlckJ5JyAiCiAgICAgICAgICAgICAgICAgICAgLiAnb3IgdGhlIHZhbHVlIGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKCiAgICB9CgogICAgIyBjaGVjayBpZiBPcmRlckJ5RGlyZWN0aW9uIGFycmF5IGNvbnRhaW5zIG9ubHkgJ1VwJyBvciAnRG93bicKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uICggQHsgJFBhcmFte09yZGVyQnlEaXJlY3Rpb259IH0gKSB7CgogICAgICAgICMgb25seSAnVXAnIG9yICdEb3duJyBhbGxvd2VkCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnVXAnOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ0Rvd24nOwoKICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5RGlyZWN0aW9uIGNhbiBvbmx5IGNvbnRhaW4gJ1VwJyBvciAnRG93bichIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBTUUwKICAgIG15ICRTUUwgPSAnU0VMRUNUIGkuaWQsIGNvdW50KCB2Lml0ZW1faWQgKSBhcyB2b3RlcywgYXZnKCB2LnJhdGUgKSBhcyB2cmF0ZSAnCiAgICAgICAgLiAnRlJPTSBmYXFfaXRlbSBpICcKICAgICAgICAuICdMRUZUIEpPSU4gZmFxX3ZvdGluZyB2IE9OIHYuaXRlbV9pZCA9IGkuaWQgJwogICAgICAgIC4gJ0xFRlQgSk9JTiBmYXFfc3RhdGUgcyBPTiBzLmlkID0gaS5zdGF0ZV9pZCc7CgogICAgIyBleHRlbmRlZCBTUUwKICAgIG15ICRFeHQgPSAnJzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICRTUUwgLj0gJyBMRUZUIEpPSU4gZmFxX3NlcnZpY2Ugc2UgT04gc2UuaXRlbV9pZCA9IGkuaWQnOwogICAgfQoKICAgICMgZnVsbC10ZXh0IHNlYXJjaAogICAgaWYgKCAkUGFyYW17V2hhdH0gJiYgJFBhcmFte1doYXR9IG5lICcqJyApIHsKCiAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBmaWVsZHMgZm9yIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoRmllbGRzID0gKCAnaS5mX251bWJlcicsICdpLmZfc3ViamVjdCcsICdpLmZfa2V5d29yZHMnICk7CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBhZ2VudCBpbnRlcmZhY2UgKGludGVybmFsKQogICAgICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnaW50ZXJuYWwnICkgewoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWVsZCAoaW50ZXJuYWwsIGV4dGVybmFsLCBwdWJsaWMpCiAgICAgICAgICAgICAgICBteSAkRmllbGRTdGF0ZSA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApLT57U2hvd307CgogICAgICAgICAgICAgICAgIyBhZGQgYWxsIGludGVybmFsLCBleHRlcm5hbCBhbmQgcHVibGljIGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlIGVxICdpbnRlcm5hbCcKICAgICAgICAgICAgICAgICAgICB8fCAkRmllbGRTdGF0ZSBlcSAnZXh0ZXJuYWwnCiAgICAgICAgICAgICAgICAgICAgfHwgJEZpZWxkU3RhdGUgZXEgJ3B1YmxpYycKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRmllbGRzLCAnaS5mX2ZpZWxkJyAuICROdW1iZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBjdXN0b21lciBpbnRlcmZhY2UgKGV4dGVybmFsKQogICAgICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAnZXh0ZXJuYWwnICkgewoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWVsZCAoaW50ZXJuYWwsIGV4dGVybmFsLCBwdWJsaWMpCiAgICAgICAgICAgICAgICBteSAkRmllbGRTdGF0ZSA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJE51bWJlciApLT57U2hvd307CgogICAgICAgICAgICAgICAgIyBhZGQgYWxsIGV4dGVybmFsIGFuZCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdleHRlcm5hbCcgfHwgJEZpZWxkU3RhdGUgZXEgJ3B1YmxpYycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRmllbGRzLCAnaS5mX2ZpZWxkJyAuICROdW1iZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXNlZCBmcm9tIHRoZSBwdWJsaWMgaW50ZXJmYWNlIChwdWJsaWMpCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZmllbGQgKGludGVybmFsLCBleHRlcm5hbCwgcHVibGljKQogICAgICAgICAgICAgICAgbXkgJEZpZWxkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBwdWJsaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgU1FMIGZvciB0aGUgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgICRFeHQgLj0gJERCT2JqZWN0LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgICAgID0+IFxAU2VhcmNoRmllbGRzLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gJFBhcmFte1doYXR9LAogICAgICAgICAgICBTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CiAgICAgICAgJFBhcmFte051bWJlcn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte051bWJlcn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17TnVtYmVyfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIoaS5mX251bWJlcikgTElLRSBMT1dFUignIiAuICRQYXJhbXtOdW1iZXJ9IC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgdGl0bGUKICAgIGlmICggJFBhcmFte1RpdGxlfSApIHsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gIlwlJFBhcmFte1RpdGxlfVwlIjsKICAgICAgICAkUGFyYW17VGl0bGV9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtUaXRsZX0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtUaXRsZX0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKGkuZl9zdWJqZWN0KSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1RpdGxlfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgbGFuZ3VhZ2VzCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEc30gJiYgcmVmICRQYXJhbXtMYW5ndWFnZUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17TGFuZ3VhZ2VJRHN9IH0gKSB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmZfbGFuZ3VhZ2VfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17TGFuZ3VhZ2VJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3JpZXMKICAgIGlmICggJFBhcmFte0NhdGVnb3J5SURzfSAmJiByZWYgJFBhcmFte0NhdGVnb3J5SURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ2kuY2F0ZWdvcnlfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRHMgKG9ubHkgc2VhcmNoIGZvciB2YWxpZCBGQVFzKQogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRHN9ICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgaWRzCiAgICAgICAgbXkgQFZhbGlkSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgICAgICRQYXJhbXtWYWxpZElEc30gPSBcQFZhbGlkSURzOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBWYWxpZElEcwogICAgaWYgKCAkUGFyYW17VmFsaWRJRHN9ICYmIHJlZiAkUGFyYW17VmFsaWRJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte1ZhbGlkSURzfSB9ICkgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS52YWxpZF9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+ICRQYXJhbXtWYWxpZElEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3Igc3RhdGVzCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnSEFTSCcgJiYgJXsgJFBhcmFte1N0YXRlc30gfSApIHsKCiAgICAgICAgbXkgQFN0YXRlcyA9IG1hcCB7ICREQk9iamVjdC0+UXVvdGUoICRfLCAnSW50ZWdlcicgKSB9IGtleXMgJXsgJFBhcmFte1N0YXRlc30gfTsKCiAgICAgICAgcmV0dXJuIGlmIHNjYWxhciBAU3RhdGVzICE9IGtleXMgJXsgJFBhcmFte1N0YXRlc30gfTsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3MudHlwZV9pZCcsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFxAU3RhdGVzLAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHNlcnZpY2UKICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gKSB7CgogICAgICAgIG15ICRTUUxTdHJpbmcgPSAnKCBzZS5zZXJ2aWNlX2lkPScgLiAkUGFyYW17U2VydmljZUlEfSAuICcgKSc7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkU1FMU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBrZXl3b3JkcwogICAgaWYgKCAkUGFyYW17S2V5d29yZH0gKSB7CgogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9fiBzLywvJiYvZzsKICAgICAgICAkUGFyYW17S2V5d29yZH0gPX4gcy87LyYmL2c7CiAgICAgICAgJFBhcmFte0tleXdvcmR9ID1+IHMvIC8mJi9nOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgU1FMIGZvciB0aGUga2V5d29yZCBzZWFyY2gKICAgICAgICAkRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnaS5mX2tleXdvcmRzJywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtLZXl3b3JkfSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBvbmx5IGFwcHJvdmVkIEZBUSBhcnRpY2xlcyBmb3IgcHVibGljIGFuZCBjdXN0b21lciBpbnRlcmZhY2UKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAncHVibGljJyB8fCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICcgaS5hcHByb3ZlZCA9IDEnOwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGNoZWNrIGlmIG5lZWQgdG8gc2VhcmNoIGZvciBhcHByb3ZlZCBzdGF0dXMKICAgIGVsc2lmICggZGVmaW5lZCAkUGFyYW17QXBwcm92ZWR9ICkgewogICAgICAgIG15ICRBcHByb3ZlZFZhbHVlID0gJFBhcmFte0FwcHJvdmVkfSA/IDEgOiAwOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIGkuYXBwcm92ZWQgPSAkQXBwcm92ZWRWYWx1ZSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNyZWF0ZSB1c2VycwogICAgaWYgKAogICAgICAgICRQYXJhbXtDcmVhdGVkVXNlcklEc30KICAgICAgICAmJiByZWYgJFBhcmFte0NyZWF0ZWRVc2VySURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte0NyZWF0ZWRVc2VySURzfSB9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jcmVhdGVkX2J5JywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBsYXN0IGNoYW5nZSB1c2VycwogICAgaWYgKAogICAgICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9CiAgICAgICAgJiYgcmVmICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17TGFzdENoYW5nZWRVc2VySURzfSB9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jaGFuZ2VkX2J5JywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIFNlYXJjaCBmb3IgY3JlYXRlIGFuZCBjaGFuZ2UgdGltZXMuCiAgICAjIFJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcy4KICAgIG15ICREYXRlVGltZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgbXkgJEN1cnJlbnRTeXN0ZW1UaW1lID0gJERhdGVUaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXN9ICkgewogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICREYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICREYXRlVGltZS0+U3VidHJhY3QoIFNlY29uZHMgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzfSAqIDYwICk7CiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY3JlYXRlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyTWludXRlc30gKSB7CiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJERhdGVUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgJERhdGVUaW1lLT5TdWJ0cmFjdCggU2Vjb25kcyA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9ICogNjAgKTsKICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9ID0gJERhdGVUaW1lLT5Ub1N0cmluZygpOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSApIHsKCiAgICAgICAgIyBjaGVjayB0aW1lIGZvcm1hdAogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSwKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY3JlYXRlZCA8PSAnIgogICAgICAgICAgICAuICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBJdGVtcyBjaGFuZ2VkIG5ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSchIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9LAogICAgICAgICAgICB9CiAgICAgICAgKS0+VG9FcG9jaCgpOwogICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgIHJldHVybiBpZiAkVGltZSA+ICRDdXJyZW50U3lzdGVtVGltZTsKCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lIGZyYW1lCiAgICAgICAgcmV0dXJuIGlmICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlICYmICRUaW1lID4gJENvbXBhcmVDcmVhdGVUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jcmVhdGVkID49ICciCiAgICAgICAgICAgIC4gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSApIHsKICAgICAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkRGF0ZVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkRGF0ZVRpbWUtPlN1YnRyYWN0KCBTZWNvbmRzID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyTWludXRlc30gKiA2MCApOwogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gPSAkRGF0ZVRpbWUtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICREYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICREYXRlVGltZS0+U3VidHJhY3QoIFNlY29uZHMgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSAqIDYwICk7CiAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY2hhbmdlZCBvbGRlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgbXkgJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CiAgICBpZiAoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApLT5Ub0Vwb2NoKCk7CiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9IC4gIichIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGUgPSAkVGltZTsKCiAgICAgICAgJEV4dCAuPSAiIEFORCBpLmNoYW5nZWQgPD0gJyIKICAgICAgICAgICAgLiAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9ICkgLiAiJyI7CiAgICB9CgogICAgIyBnZXQgSXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSwKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkQ3VycmVudFN5c3RlbVRpbWU7CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG9sZGVyL25ld2VyIGRhdGUgcmVzdHJpY3Rpb24gc2hvdyBub3cgdmFsaWQgdGltZSBmcmFtZQogICAgICAgIHJldHVybiBpZiAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlQ2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY2hhbmdlZCA+PSAnIgogICAgICAgICAgICAuICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBSZW1lbWJlciBhbHJlYWR5IGpvaW5lZCB0YWJsZXMgZm9yIHNvcnRpbmcuCiAgICBteSAlRHluYW1pY0ZpZWxkSm9pblRhYmxlczsKICAgIG15ICREeW5hbWljRmllbGRKb2luQ291bnRlciA9IDE7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrLWVuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIERZTkFNSUNfRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JEZBUUR5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICRTZWFyY2hQYXJhbSA9ICRQYXJhbXsgIkR5bmFtaWNGaWVsZF8iIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ19GSUVMRCBpZiAoICEkU2VhcmNoUGFyYW0gKTsKICAgICAgICBuZXh0IERZTkFNSUNfRklFTEQgaWYgKCByZWYgJFNlYXJjaFBhcmFtIG5lICdIQVNIJyApOwoKICAgICAgICBteSAkTmVlZEpvaW47CgogICAgICAgIGZvciBteSAkT3BlcmF0b3IgKCBzb3J0IGtleXMgJXskU2VhcmNoUGFyYW19ICkgewoKICAgICAgICAgICAgbXkgQFNlYXJjaFBhcmFtcyA9ICggcmVmICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gZXEgJ0FSUkFZJyApCiAgICAgICAgICAgICAgICA/IEB7ICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gfQogICAgICAgICAgICAgICAgOiAoICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gKTsKCiAgICAgICAgICAgIG15ICRTUUxFeHRTdWIgPSAnIEFORCAoJzsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgVEVYVCBpZiAkVGV4dCA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIGRhdGEgdHlwZQogICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFZhbGlkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdmFsdWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIicgb24gZmllbGQgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICInISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIiwKICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciAgICAgICAgICAgPT4gJE9wZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcpJzsKICAgICAgICAgICAgaWYgKCRDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICRTUUxFeHRTdWI7CiAgICAgICAgICAgICAgICAkTmVlZEpvaW4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJE5lZWRKb2luKSB7CgogICAgICAgICAgICAjIEpvaW4gdGhlIHRhYmxlIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgJFNRTCAuPSAiIElOTkVSIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIKICAgICAgICAgICAgICAgIE9OIChpLmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIEdST1VQIEJZCiAgICAkRXh0CiAgICAgICAgLj0gJyBHUk9VUCBCWSBpLmlkLCBpLmZfc3ViamVjdCwgaS5mX2xhbmd1YWdlX2lkLCBpLmNyZWF0ZWQsIGkuY2hhbmdlZCwgcy5uYW1lLCB2Lml0ZW1faWQgJzsKCiAgICAjIGFkZCBIQVZJTkcgY2xhdXNlICggVm90ZXMgYW5kIFJhdGUgYXJlIGFnZ3JlZ2F0ZWQgY29sdW1ucywgdGhleSBjYW4ndCBiZSBpbiB0aGUgV0hFUkUgY2xhdXNlKQogICAgIyBkZWZpbmVkIHZvdGluZyBwYXJhbWV0ZXJzIChmb3IgVm90ZXMgYW5kIFJhdGUpCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICc9JywKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnPicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJz49JywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnPCcsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzw9JywKICAgICk7CgogICAgbXkgJEhhdmluZ1ByaW50OwogICAgbXkgJEFkZGVkQ29uZGl0aW9uOwoKICAgIEhBVklOR19QQVJBTToKICAgIGZvciBteSAkSGF2aW5nUGFyYW0gKHF3KFZvdGVzIFJhdGUpKSB7CiAgICAgICAgbXkgJFNlYXJjaFBhcmFtID0gJFBhcmFteyRIYXZpbmdQYXJhbX07CgogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggISRTZWFyY2hQYXJhbSApOwogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggcmVmICRTZWFyY2hQYXJhbSBuZSAnSEFTSCcgKTsKCiAgICAgICAgT1BFUkFUT1I6CiAgICAgICAgZm9yIG15ICRPcGVyYXRvciAoIHNvcnQga2V5cyAleyRTZWFyY2hQYXJhbX0gKSB7CgogICAgICAgICAgICBuZXh0IE9QRVJBVE9SIGlmICEoICRWb3RpbmdPcGVyYXRvcnN7JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgIyBwcmludCBIQVZJTkcgY2xhdXNlIGp1c3Qgb25jZSBpZiBhbmQganVzdCBpZiB0aGUgb3BlcmF0b3IgaXMgdmFsaWQKICAgICAgICAgICAgaWYgKCAhJEhhdmluZ1ByaW50ICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAnIEhBVklORyAnOwogICAgICAgICAgICAgICAgJEhhdmluZ1ByaW50ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YjsKCiAgICAgICAgICAgIG15IEBTZWFyY2hQYXJhbXMgPSAoIHJlZiAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IGVxICdBUlJBWScgKQogICAgICAgICAgICAgICAgPyBAeyAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IH0KICAgICAgICAgICAgICAgIDogKCAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9ICk7CgogICAgICAgICAgICAjIGRvIG5vdCB1c2UgQU5EIG9uIHRoZSBmaXJzdCBjb25kaXRpb24KICAgICAgICAgICAgaWYgKCRBZGRlZENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIEFORCAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgVEVYVCBpZiAkVGV4dCA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcgT1IgJyBpZiAoJENvdW50ZXIpOwoKICAgICAgICAgICAgICAgICMgZGVmaW5lIGFnZ3JlZ2F0aW9uIGNvbHVtbgogICAgICAgICAgICAgICAgbXkgJEFnZ3JlZ2F0ZUNvbHVtbiA9ICdjb3VudCggdi5pdGVtX2lkICknOwogICAgICAgICAgICAgICAgaWYgKCAkSGF2aW5nUGFyYW0gZXEgJ1JhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRBZ2dyZWdhdGVDb2x1bW4gPSAnYXZnKCB2LnJhdGUgKSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZXQgY29uZGl0aW9uCiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICIgJEFnZ3JlZ2F0ZUNvbHVtbiAkVm90aW5nT3BlcmF0b3JzeyRPcGVyYXRvcn0gIjsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJERCT2JqZWN0LT5RdW90ZSggJFRleHQsICdOdW1iZXInICkgLiAiICI7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjbG9zZSBjb25kaXRpb24KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSAnOwoKICAgICAgICAgICAgIyBhZGQgY29uZGl0aW9uIHRvIHRoZSBmaW5hbCBTUUwgc3RhdGVtZW50CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZGl0aW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGRhdGFiYXNlIHF1ZXJ5IGZvciBzb3J0L29yZGVyIGJ5IG9wdGlvbgogICAgbXkgJEV4dE9yZGVyQnkgPSAnIE9SREVSIEJZJzsKICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKICAgICAgICBpZiAoICRDb3VudCA+IDAgKSB7CiAgICAgICAgICAgICRFeHRPcmRlckJ5IC49ICcsJzsKICAgICAgICB9CgogICAgICAgICMgc29ydCBieSBkeW5hbWljIGZpZWxkCiAgICAgICAgaWYgKCAkVmFsaWREeW5hbWljRmllbGRQYXJhbXN7ICRQYXJhbXtPcmRlckJ5fS0+WyRDb3VudF0gfSApIHsKICAgICAgICAgICAgbXkgKCREeW5hbWljRmllbGROYW1lKSA9ICRQYXJhbXtPcmRlckJ5fS0+WyRDb3VudF0gPX4gbS9eRHluYW1pY0ZpZWxkXyguKikkL3NteDsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRkFRRHluYW1pY0ZpZWxkTmFtZTJDb25maWd7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgICAgICAgICAgIyBJZiB0aGUgdGFibGUgd2FzIGFscmVhZHkgam9pbmVkIGZvciBzZWFyY2hpbmcsIHdlIHJldXNlIGl0LgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBKb2luIHRoZSB0YWJsZSBmb3IgdGhpcyBkeW5hbWljIGZpZWxkOyB1c2UgYSBsZWZ0IG91dGVyIGpvaW4gaW4gdGhpcyBjYXNlLgogICAgICAgICAgICAgICAgIyBXaXRoIGFuIElOTkVSIEpPSU4gd2UnZCBsaW1pdCB0aGUgcmVzdWx0IHNldCB0byB0aWNrZXRzIHdoaWNoIGhhdmUgYW4gZW50cnkKICAgICAgICAgICAgICAgICMgICBmb3IgdGhlIERGIHdoaWNoIGlzIHVzZWQgZm9yIHNvcnRpbmcuCiAgICAgICAgICAgICAgICAkU1FMCiAgICAgICAgICAgICAgICAgICAgLj0gIiBMRUZUIE9VVEVSIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIKICAgICAgICAgICAgICAgICAgICBPTiAoaS5pZCA9IGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFNRTE9yZGVyRmllbGQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMT3JkZXJGaWVsZEdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgVGFibGVBbGlhcyAgICAgICAgID0+ICREeW5hbWljRmllbGRKb2luVGFibGVzeyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEV4dCAgICAgICAgLj0gIiwgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgJEV4dE9yZGVyQnkgLj0gIiAkU1FMT3JkZXJGaWVsZCAiOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgUmVndWxhciBzb3J0LgogICAgICAgICAgICAkRXh0T3JkZXJCeSAuPSAnICcgLiAkT3JkZXJCeVRhYmxleyAkUGFyYW17T3JkZXJCeX0tPlskQ291bnRdIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gZXEgJ1VwJyApIHsKICAgICAgICAgICAgJEV4dE9yZGVyQnkgLj0gJyBBU0MnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEV4dE9yZGVyQnkgLj0gJyBERVNDJzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIG9yZGVyaW5nIGlzIG5vdCBkZXRlcm1pbmVkCiAgICAjIHdlIGFkZCBhbiBkZXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ0ZBUUlEJyB9ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSApIHsKICAgICAgICBpZiAoICQjeyAkUGFyYW17T3JkZXJCeX0gfSA+PSAwICkgewogICAgICAgICAgICAkRXh0T3JkZXJCeSAuPSAnLCc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGJ5IGRpcmVjdGlvbgogICAgICAgIG15ICRPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQyc7CgogICAgICAgICMgdHJ5IHRvIGdldCB0aGUgb3JkZXIgYnkgZGlyZWN0aW9uIG9mIHRoZSBsYXN0CiAgICAgICAgIyB1c2VkICdDcmVhdGVkJyBvciAnQ2hhbmdlZCcgT3JkZXJCeSBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnQ3JlYXRlZCcgfHwgJE9yZGVyQnkgZXEgJ0NoYW5nZWQnICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeURpcmVjdGlvbiA9ICdERVNDJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICB9CgogICAgICAgICRFeHRPcmRlckJ5IC49ICcgJyAuICRPcmRlckJ5VGFibGV7RkFRSUR9IC4gJyAnIC4gJE9yZGVyQnlEaXJlY3Rpb247CiAgICB9CgogICAgIyBhZGQgZXh0ZW5kZWQgU1FMCiAgICAkU1FMIC49ICRFeHQgLiAkRXh0T3JkZXJCeTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDUwMCwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aGVhZDEgUFJJVkFURSBGVU5DVElPTlMKCj1oZWFkMiBfSW5Db25kaXRpb25HZXQoKQoKaW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIGFuCgogICAgdGFibGUuY29sdW1uIElOICh2YWx1ZXMpCgpjb25kaXRpb24gc3RyaW5nIGZyb20gYW4gYXJyYXkuCgogICAgbXkgJFNRTFBhcnQgPSAkVGlja2V0T2JqZWN0LT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3RhYmxlLmNvbHVtbicsCiAgICAgICAgSURSZWYgICAgICAgPT4gJEFycmF5UmVmLAogICAgKTsKCj1jdXQKCnN1YiBfSW5Db25kaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VGFibGVDb2x1bW59ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUYWJsZUNvbHVtbiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0lEUmVmfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBJRFJlZiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc29ydCBpZHMgdG8gY2FjaGUgdGhlIFNRTCBxdWVyeQogICAgbXkgQFNvcnRlZElEcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAeyAkUGFyYW17SURSZWZ9IH07CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIEVycm9yIG91dCBpZiBzb21lIHZhbHVlcyB3ZXJlIG5vdCBpbnRlZ2Vycy4KICAgIEBTb3J0ZWRJRHMgPSBtYXAgeyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRfLCAnSW50ZWdlcicgKSB9IEBTb3J0ZWRJRHM7CiAgICByZXR1cm4gaWYgc2NhbGFyIEBTb3J0ZWRJRHMgIT0gc2NhbGFyIEB7ICRQYXJhbXtJRFJlZn0gfTsKCiAgICAjIHNwbGl0IElOIHN0YXRlbWVudCB3aXRoIG1vcmUgdGhhbiA5MDAgZWxlbWVudHMgaW4gbW9yZSBzdGF0ZW1lbnRzIGNvbWJpbmVkIHdpdGggT1IKICAgICMgYmVjYXVzZSBPcmFjbGUgZG9lc24ndCBzdXBwb3J0IG1vcmUgdGhhbiAxMDAwIGVsZW1lbnRzIGluIG9uZSBJTiBzdGF0ZW1lbnQuCiAgICBteSBAU1FMU3RyaW5nczsKICAgIExPT1A6CiAgICB3aGlsZSAoIHNjYWxhciBAU29ydGVkSURzICkgewoKICAgICAgICBteSBAU29ydGVkSURzUGFydCA9IHNwbGljZSBAU29ydGVkSURzLCAwLCA5MDA7CgogICAgICAgIG15ICRJRFN0cmluZyA9IGpvaW4gJywgJywgQFNvcnRlZElEc1BhcnQ7CgogICAgICAgIHB1c2ggQFNRTFN0cmluZ3MsICIgJFBhcmFte1RhYmxlQ29sdW1ufSBJTiAoJElEU3RyaW5nKSAiOwogICAgfQoKICAgIG15ICRTUUwgPSBqb2luICcgT1IgJywgQFNRTFN0cmluZ3M7CiAgICAkU1FMID0gJyAoICcgLiAkU1FMIC4gJyApICc7CgogICAgcmV0dXJuICRTUUw7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpGQVEKCj1oZWFkMSBERVNDUklQVElPTgoKRkFRIGJhY2tlbmQgZm9yIHRoZSBsaW5rIG9iamVjdC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEZBUU9iamVjdEJhY2tlbmQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6RkFRJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIExpbmtMaXN0V2l0aERhdGEoKQoKZmlsbCB1cCB0aGUgbGluayBsaXN0IHdpdGggZGF0YQoKICAgICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgTGlua0xpc3QgPT4gJEhhc2hSZWYsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0xpc3RXaXRoRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fSB9ICkgewoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfSB9ICkgewoKICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBpZCBmcm9tIGhhc2ggaWYgbm8gRkFRIGRhdGEgd2FzIGZvdW5kCiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufS0+eyRJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTUlEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgICAgICAgICAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JEl0ZW1JRH0gPSBcJUZBUURhdGE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkTGlua09iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBPYmplY3QgID0+ICdGQVEnLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2R1bGUgcmVnaXN0cnkgb2YgQWdlbnRGQVFab29tCiAgICBteSAkTW9kdWxlUmVnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPntBZ2VudEZBUVpvb219OwoKICAgICMgZG8gbm90IGdyYW50IGFjY2VzcyBpZiBmcm9udGVuZCBtb2R1bGUgaXMgbm90IHJlZ2lzdGVyZWQKICAgIHJldHVybiBpZiAhJE1vZHVsZVJlZzsKCiAgICAjIGdyYW50IGFjY2VzcyBpZiBtb2R1bGUgcGVybWlzc2lvbiBoYXMgbm8gR3JvdXAgb3IgR3JvdXBSbyBkZWZpbmVkCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRNb2R1bGVSZWctPntHcm91cFJvfSApICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRNb2R1bGVSZWctPntHcm91cH0gKSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICBQRVJNSVNTSU9OOgogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhHcm91cFJvIEdyb3VwKSkgewoKICAgICAgICBuZXh0IFBFUk1JU1NJT04gaWYgISRNb2R1bGVSZWctPnskUGVybWlzc2lvbn07CiAgICAgICAgbmV4dCBQRVJNSVNTSU9OIGlmIHJlZiAkTW9kdWxlUmVnLT57JFBlcm1pc3Npb259IG5lICdBUlJBWSc7CgogICAgICAgIGZvciBteSAkR3JvdXAgKCBAeyAkTW9kdWxlUmVnLT57JFBlcm1pc3Npb259IH0gKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZ3JvdXAgaWQKICAgICAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKCiAgICAgICAgICAgIG15ICRUeXBlOwogICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uIGVxICdHcm91cFJvJyApIHsKICAgICAgICAgICAgICAgICRUeXBlID0gJ3JvJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRQZXJtaXNzaW9uIGVxICdHcm91cCcgKSB7CiAgICAgICAgICAgICAgICAkVHlwZSA9ICdydyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHVzZXIgZ3JvdXBzLCB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIGFwcHJvcHJpYXRlIHByaXZpbGVnZQogICAgICAgICAgICBteSAlR3JvdXBzID0gJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgaWYgYWdlbnQgaXMgYSBtZW1iZXIgaW4gdGhlIGdyb3VwCiAgICAgICAgICAgIHJldHVybiAxIGlmICRHcm91cHN7JEdyb3VwSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBPYmplY3REZXNjcmlwdGlvbkdldCgpCgpyZXR1cm4gYSBoYXNoIG9mIG9iamVjdCBkZXNjcmlwdGlvbnMKClJldHVybgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAiRkFRIyAxMjM0IiwKICAgICAgICBMb25nICAgPT4gIkZBUSMgMTIzNDogRkFRVGl0bGUiLAogICAgKTsKCiAgICAlRGVzY3JpcHRpb24gPSAkTGlua09iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgS2V5ICAgICA9PiAxMjMsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3REZXNjcmlwdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgIG15ICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gJ0ZBUScsCiAgICAgICAgTG9uZyAgID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uIGlmICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgbXkgJUZBUSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJUZBUTsKCiAgICAjIGRlZmluZSBkZXNjcmlwdGlvbiB0ZXh0CiAgICBteSAkRkFRSG9vayAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICREZXNjcmlwdGlvblRleHQgPSAiJEZBUUhvb2sgJEZBUXtOdW1iZXJ9IjsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAkRGVzY3JpcHRpb25UZXh0LAogICAgICAgIExvbmcgICA9PiAiJERlc2NyaXB0aW9uVGV4dDogJEZBUXtUaXRsZX0iLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uOwp9Cgo9aGVhZDIgT2JqZWN0U2VhcmNoKCkKCnJldHVybiBhIGhhc2ggbGlzdCBvZiB0aGUgc2VhcmNoIHJlc3VsdHMKClJldHVybgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgTk9ULUxJTktFRCA9PiB7CiAgICAgICAgICAgIFNvdXJjZSA9PiB7CiAgICAgICAgICAgICAgICAxMiAgPT4gJERhdGFPZkl0ZW0xMiwKICAgICAgICAgICAgICAgIDIxMiA9PiAkRGF0YU9mSXRlbTIxMiwKICAgICAgICAgICAgICAgIDMzMiA9PiAkRGF0YU9mSXRlbTMzMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCiAgICAkU2VhcmNoTGlzdCA9ICRMaW5rT2JqZWN0QmFja2VuZC0+T2JqZWN0U2VhcmNoKAogICAgICAgIFNlYXJjaFBhcmFtcyA9PiAkSGFzaFJlZiwgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBhZGQgd2lsZC1jYXJkcwogICAgbXkgJVNlYXJjaDsKICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntUaXRsZX0gKSB7CiAgICAgICAgJFNlYXJjaHtUaXRsZX0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+e1RpdGxlfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2h7TnVtYmVyfSA9ICcqJyAuICRQYXJhbXtTZWFyY2hQYXJhbXN9LT57TnVtYmVyfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSApIHsKICAgICAgICAkU2VhcmNoe1doYXR9ID0gJyonIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSAuICcqJzsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgc2VhcmNoIHRoZSBGQVFzCiAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSB9LAogICAgICAgICVTZWFyY2gsCiAgICAgICAgT3JkZXIgID0+ICdDcmVhdGVkJywKICAgICAgICBTb3J0ICAgPT4gJ2Rvd24nLAogICAgICAgIExpbWl0ICA9PiA1MCwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVTZWFyY2hMaXN0OwogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IElURU1JRCBpZiAhJUZBUURhdGE7CgogICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgJFNlYXJjaExpc3R7Tk9UTElOS0VEfS0+e1NvdXJjZX0tPnskSXRlbUlEfSA9IFwlRkFRRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0FkZFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgVHlwZSBTdGF0ZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgTGlua0RlbGV0ZVByZSgpCgpsaW5rIGRlbGV0ZSBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rRGVsZXRlUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExpbmtEZWxldGVQb3N0KCkKCmxpbmsgZGVsZXRlIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpGQVFBY2Nlc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBQYXJhbSB7CgogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSBAUGFyYW1zID0gKCk7CgogICAgIyBHZXQgY3VycmVudCB0aW1lLgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICk7CiAgICBteSAkRGF0ZVRpbWVTZXR0aW5ncyA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CgogICAgbXkgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZVNldHRpbmdzLT57RGF5fSApOwogICAgbXkgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZVNldHRpbmdzLT57TW9udGh9ICk7CiAgICBteSAkWSA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lU2V0dGluZ3MtPntZZWFyfSApOwoKICAgICMgQ3JlYXRlIHBvc3NpYmxlIHRpbWUgc2VsZWN0aW9ucy4KICAgIG15ICVZZWFyID0gbWFwIHsgJF8gPT4gJF8gfSAoICRZIC0gMTAgLi4gJFkgKyAxICk7CiAgICBteSAlTW9udGggPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICkgPT4gc3ByaW50ZiggIiUwMmQiLCAkXyApIH0gKCAxIC4uIDEyICk7CiAgICBteSAlRGF5ICAgPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICkgPT4gc3ByaW50ZiggIiUwMmQiLCAkXyApIH0gKCAxIC4uIDMxICk7CgogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgZGF5JywKICAgICAgICBOYW1lICAgICAgID0+ICdTdGFydERheScsCiAgICAgICAgTXVsdGlwbGUgICA9PiAwLAogICAgICAgIFNpemUgICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEID0+ICcwMScsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVEYXksCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdTdGFydCBtb250aCcsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnRNb250aCcsCiAgICAgICAgTXVsdGlwbGUgICA9PiAwLAogICAgICAgIFNpemUgICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEID0+ICRNLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlTW9udGgsCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdTdGFydCB5ZWFyJywKICAgICAgICBOYW1lICAgICAgID0+ICdTdGFydFllYXInLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkWSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJVllYXIsCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdFbmQgZGF5JywKICAgICAgICBOYW1lICAgICAgID0+ICdFbmREYXknLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkRCwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJURheSwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ0VuZCBtb250aCcsCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kTW9udGgnLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkTSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJU1vbnRoLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnRW5kIHllYXInLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZFllYXInLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkWSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJVllYXIsCiAgICAgICAgfSwKICAgIH07CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIG5lZWRlZCBzdHVmZi4KICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhTdGFydFllYXIgU3RhcnRNb250aCBTdGFydERheSBFbmRZZWFyIEVuZE1vbnRoIEVuZERheSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRGF0ZVRpbWVPYmplY3RTdGFydCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgWWVhciAgICAgPT4gJFBhcmFte1N0YXJ0WWVhcn0sCiAgICAgICAgICAgIE1vbnRoICAgID0+ICRQYXJhbXtTdGFydE1vbnRofSwKICAgICAgICAgICAgRGF5ICAgICAgPT4gMSwKICAgICAgICAgICAgVGltZVpvbmUgPT4gJ2Zsb2F0aW5nJywKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkTGFzdERheU9mTW9udGhTdGFydDsKICAgIGlmICggZGVmaW5lZCAkRGF0ZVRpbWVPYmplY3RTdGFydCApIHsKICAgICAgICAkTGFzdERheU9mTW9udGhTdGFydCA9ICREYXRlVGltZU9iamVjdFN0YXJ0LT5MYXN0RGF5T2ZNb250aEdldCgpOwogICAgfQoKICAgICMgQ29ycmVjdCBzdGFydCBkYXkgb2YgbW9udGggaWYgZW50ZXJlZCB3cm9uZyBieSB1c2VyLgogICAgbXkgJFN0YXJ0RGF5ID0gc3ByaW50ZiggIiUwMmQiLCAkTGFzdERheU9mTW9udGhTdGFydCApOwogICAgaWYgKCAkUGFyYW17U3RhcnREYXl9IDwgJFN0YXJ0RGF5ICkgewogICAgICAgICRTdGFydERheSA9ICRQYXJhbXtTdGFydERheX07CiAgICB9CgogICAgbXkgJERhdGVUaW1lT2JqZWN0RW5kID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBZZWFyICAgICA9PiAkUGFyYW17RW5kWWVhcn0sCiAgICAgICAgICAgIE1vbnRoICAgID0+ICRQYXJhbXtFbmRNb250aH0sCiAgICAgICAgICAgIERheSAgICAgID0+IDEsCiAgICAgICAgICAgIFRpbWVab25lID0+ICdmbG9hdGluZycsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJExhc3REYXlPZk1vbnRoRW5kOwogICAgaWYgKCBkZWZpbmVkICREYXRlVGltZU9iamVjdEVuZCApIHsKICAgICAgICAkTGFzdERheU9mTW9udGhFbmQgPSAkRGF0ZVRpbWVPYmplY3RFbmQtPkxhc3REYXlPZk1vbnRoR2V0KCk7CiAgICB9CgogICAgIyBDb3JyZWN0IGVuZCBkYXkgb2YgbW9udGggaWYgZW50ZXJlZCB3cm9uZyBieSB1c2VyLgogICAgbXkgJEVuZERheSA9IHNwcmludGYoICIlMDJkIiwgJExhc3REYXlPZk1vbnRoRW5kICk7CiAgICBpZiAoICRQYXJhbXtFbmREYXl9IDwgJEVuZERheSApIHsKICAgICAgICAkRW5kRGF5ID0gJFBhcmFte0VuZERheX07CiAgICB9CgogICAgIyBTZXQgc3RhcnQgYW5kIGVuZCBkYXRlLgogICAgbXkgJFN0YXJ0RGF0ZSA9ICIkUGFyYW17U3RhcnRZZWFyfS0kUGFyYW17U3RhcnRNb250aH0tJFN0YXJ0RGF5IDAwOjAwOjAwIjsKICAgIG15ICRFbmREYXRlICAgPSAiJFBhcmFte0VuZFllYXJ9LSRQYXJhbXtFbmRNb250aH0tJEVuZERheSAyMzo1OTo1OSI7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkRkFRVG9wMTBMaW1pdENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OkxpbWl0Jyk7CgogICAgIyBHZXQgYSBjb3VudCBvZiBhbGwgRkFRIGFydGljbGVzLgogICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgIEludGVyZmFjZSA9PiAnaW50ZXJuYWwnLAogICAgICAgIFN0YXJ0RGF0ZSA9PiAkU3RhcnREYXRlLAogICAgICAgIEVuZERhdGUgICA9PiAkRW5kRGF0ZSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICBMaW1pdCAgICAgPT4gJEZBUVRvcDEwTGltaXRDb25maWcsCiAgICApIHx8IFtdOwoKICAgICMgQnVpbGQgcmVzdWx0IHRhYmxlLgogICAgbXkgQERhdGE7CiAgICBmb3IgbXkgJEl0ZW1JRFJlZiAoIEB7JFRvcDEwSXRlbUlEc1JlZn0gKSB7CgogICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSURSZWYtPntJdGVtSUR9LAogICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkVm90ZURhdGEgPSAkRkFRT2JqZWN0LT5JdGVtVm90ZURhdGFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlEUmVmLT57SXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZVJlc3VsdCA9IHNwcmludGYoCiAgICAgICAgICAgICIlMC4iCiAgICAgICAgICAgICAgICAuICRDb25maWdPYmplY3QtPkdldCgKICAgICAgICAgICAgICAgICJGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0RGVjaW1hbFBsYWNlcyIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC4gImYiLAogICAgICAgICAgICAkVm90ZURhdGEtPntSZXN1bHR9CiAgICAgICAgICAgICAgICB8fCAwCiAgICAgICAgKTsKICAgICAgICBteSAkVm90ZXMgPSAkVm90ZURhdGEtPntWb3Rlc30gfHwgMDsKCiAgICAgICAgIyBCdWlsZCB0YWJsZSByb3cuCiAgICAgICAgcHVzaCBARGF0YSwgWwogICAgICAgICAgICAkRkFRRGF0YXtOdW1iZXJ9LAogICAgICAgICAgICAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICRJdGVtSURSZWYtPntDb3VudH0sCiAgICAgICAgICAgICRWb3RlUmVzdWx0LAogICAgICAgICAgICAkVm90ZXMsCiAgICAgICAgXTsKICAgIH0KCiAgICAjIFNldCByZXBvcnQgdGl0bGUuCiAgICBteSAkVGl0bGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAtICRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkiOwoKICAgICMgVGFibGUgaGVhZGxpbmVzLgogICAgbXkgQEhlYWREYXRhID0gKAogICAgICAgICdGQVEgIycsCiAgICAgICAgJ1RpdGxlJywKICAgICAgICAnQ291bnQnLAogICAgICAgICdWb3RlIFJlc3VsdCcsCiAgICAgICAgJ1ZvdGVzJywKICAgICk7CgogICAgbXkgQFJlc3VsdCA9ICggWyRUaXRsZV0sIFtASGVhZERhdGFdLCBARGF0YSApOwoKICAgIHJldHVybiBAUmVzdWx0Owp9CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6RkFROjpJbXBvcnQnKTsKCiMgdGVzdCBjb21tYW5kIHdpdGhvdXQgc291cmNlIGFyZ3VtZW50Cm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIk9wdGlvbiAtIHdpdGhvdXQgc291cmNlLXBhdGggYXJndW1lbnQiLAopOwoKbXkgJFNvdXJjZVBhdGggPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9GQVEuY3N2IjsKCiMgdGVzdCBjb21tYW5kIHdpdGggc291cmNlIGFyZ3VtZW50CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1zZXBhcmF0b3InLCAnOycsICctLXF1b3RlJywgJycsICRTb3VyY2VQYXRoICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIHdpdGggc291cmNlIGFyZ3VtZW50IiwKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAnMCcKRGVzY3JpcHRpb246ICdGQVEgQ29ubmVjdG9yIFJFU1QgU2FtcGxlJwpGcmFtZXdvcmtWZXJzaW9uOiA2LjAueCBnaXQKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCBhbGwgYXZhaWxhYmxlcyBsYW5ndWFnZXMKICAgICAgVHlwZTogRkFROjpMYW5ndWFnZUxpc3QKICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgRGVzY3JpcHRpb246IExpc3QgYWxsIHB1YmxpYyBGQVEgY2F0ZWdvcmllcyAod2l0aCB0cmVlIGluZm9ybWF0aW9uKQogICAgICBUeXBlOiBGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdAogICAgUHVibGljRkFRR2V0OgogICAgICBEZXNjcmlwdGlvbjogUmV0cmlldmUgcHVibGljIEZBUSBlbnRyaWVzCiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRR2V0CiAgICBQdWJsaWNGQVFTZWFyY2g6CiAgICAgIERlc2NyaXB0aW9uOiBTZWFyY2ggZm9yIHB1YmxpYyBGQVFzCiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRU2VhcmNoCiAgVHJhbnNwb3J0OgogICAgQ29uZmlnOgogICAgICBLZWVwQWxpdmU6ICcnCiAgICAgIE1heExlbmd0aDogJzEwMDAwMDAwJwogICAgICBSb3V0ZU9wZXJhdGlvbk1hcHBpbmc6CiAgICAgICAgTGFuZ3VhZ2VMaXN0OgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gR0VUCiAgICAgICAgICBSb3V0ZTogL0xhbmd1YWdlTGlzdAogICAgICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgICAgIFJlcXVlc3RNZXRob2Q6CiAgICAgICAgICAtIEdFVAogICAgICAgICAgUm91dGU6IC9QdWJsaWNDYXRlZ29yeUxpc3QKICAgICAgICBQdWJsaWNGQVFHZXQ6CiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOgogICAgICAgICAgLSBHRVQKICAgICAgICAgIFJvdXRlOiAvUHVibGljRkFRR2V0CiAgICAgICAgUHVibGljRkFRU2VhcmNoOgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gUE9TVAogICAgICAgICAgUm91dGU6IC9QdWJsaWNGQVFTZWFyY2gKICAgIFR5cGU6IEhUVFA6OlJFU1QKUmVtb3RlU3lzdGVtOiAnJwpSZXF1ZXN0ZXI6CiAgVHJhbnNwb3J0OgogICAgVHlwZTogJycK
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAnMCcKRGVzY3JpcHRpb246ICdGQVEgQ29ubmVjdG9yIFNPQVAgU2FtcGxlJwpGcmFtZXdvcmtWZXJzaW9uOiA2LjAueCBnaXQKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCAgYWxsIGF2YWlsYWJsZXMgbGFuZ3VhZ2VzCiAgICAgIFR5cGU6IEZBUTo6TGFuZ3VhZ2VMaXN0CiAgICBQdWJsaWNDYXRlZ29yeUxpc3Q6CiAgICAgIERlc2NyaXB0aW9uOiBMaXN0IGFsbCBwdWJsaWMgRkFRIGNhdGVnb3JpZXMgKHdpdGggdHJlZSBpbmZvcm1hdGlvbikKICAgICAgVHlwZTogRkFROjpQdWJsaWNDYXRlZ29yeUxpc3QKICAgIFB1YmxpY0ZBUUdldDoKICAgICAgRGVzY3JpcHRpb246IFJldHJpZXZlIHB1YmxpYyBGQVEgZW50cmllcwogICAgICBUeXBlOiBGQVE6OlB1YmxpY0ZBUUdldAogICAgUHVibGljRkFRU2VhcmNoOgogICAgICBEZXNjcmlwdGlvbjogU2VhcmNoIGZvciBwdWJsaWMgRkFRcwogICAgICBUeXBlOiBGQVE6OlB1YmxpY0ZBUVNlYXJjaAogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAnMTAwMDAwMDAwJwogICAgICBOYW1lU3BhY2U6IGh0dHA6Ly93d3cub3RvYm8ub3JnL0ZBUUNvbm5lY3Rvci8KICAgICAgUmVxdWVzdE5hbWVGcmVlVGV4dDogJycKICAgICAgUmVxdWVzdE5hbWVTY2hlbWU6IFBsYWluCiAgICAgIFJlc3BvbnNlTmFtZUZyZWVUZXh0OiAnJwogICAgICBSZXNwb25zZU5hbWVTY2hlbWU6IFJlc3BvbnNlCiAgICBUeXBlOiBIVFRQOjpTT0FQClJlbW90ZVN5c3RlbTogJycKUmVxdWVzdGVyOgogIFRyYW5zcG9ydDoKICAgIFR5cGU6ICcnCg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpGQVE6OkNvbnRlbnRUeXBlU2V0Jyk7CgpteSAoICRSZXN1bHQsICRFeGl0Q29kZSApOwp7CiAgICBsb2NhbCAqU1RET1VUOwogICAgb3BlbiBTVERPVVQsICc+OmVuY29kaW5nKFVURi04KScsIFwkUmVzdWx0OwogICAgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlSW5wdXQoIFwkUmVzdWx0ICk7Cn0KCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpGQVE6OkNvbnRlbnRUeXBlU2V0IGV4aXQgY29kZSIsCik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgR2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRJdGVtSUQsCiAgICAnRkFRQWRkKCknLAopOwoKbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgojIEJ1aWxkIGEgdGVzdCBEeW5hbWljIGZpZWxkIENvbmZpZy4KbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IHsKICAgIElEICAgICAgICAgPT4gMTIzLAogICAgRmllbGRUeXBlICA9PiAnVGV4dCcsCiAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAp9OwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBSZXF1ZXN0ID0+ICJBY3Rpb249c29tZWFjdGlvbjtTdWJhY3Rpb249c29tZXN1YmFjdGlvbjtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICB9LAogICAgICAgIFJlcXVlc3QgPT4gIkFjdGlvbj1zb21lYWN0aW9uO1N1YmFjdGlvbj1zb21lc3ViYWN0aW9uO0l0ZW1JRD0kSXRlbUlEIiwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBEeW5hbWljRmllbGRDb25maWcnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVxdWVzdCA9PiAiQWN0aW9uPXNvbWVhY3Rpb247U3ViYWN0aW9uPXNvbWVzdWJhY3Rpb247SXRlbUlEPSRJdGVtSUQiLAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdNaXNzaW5nIEZBUUlEIGluIHRoZSByZXF1ZXN0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXF1ZXN0ID0+ICJBY3Rpb249c29tZWFjdGlvbjtTdWJhY3Rpb249c29tZXN1YmFjdGlvbjsiLAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBGQVFJRCBpbiB0aGUgcmVxdWVzdCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVxdWVzdCAgICAgICA9PiAiQWN0aW9uPXNvbWVhY3Rpb247U3ViYWN0aW9uPXNvbWVzdWJhY3Rpb247SXRlbUlEPS0xIiwKICAgICAgICBTdWNjZXNzICAgICAgID0+IDEsCiAgICAgICAgRXhlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgIE9iamVjdElEID0+IC0xLAogICAgICAgICAgICBEYXRhICAgICA9PiB7fSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NvcnJlY3QgRkFRJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXF1ZXN0ICAgICAgID0+ICJBY3Rpb249c29tZWFjdGlvbjtTdWJhY3Rpb249c29tZXN1YmFjdGlvbjtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgU3VjY2VzcyAgICAgICA9PiAxLAogICAgICAgIEV4ZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICBPYmplY3RJRCA9PiAkSXRlbUlELAogICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgfSwKICAgIH0sCgopOwoKbXkgJE9iamVjdEhhbmRsZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEnKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbG9jYWwgJUVOViA9ICgKICAgICAgICBSRVFVRVNUX01FVEhPRCA9PiAnR0VUJywKICAgICAgICBRVUVSWV9TVFJJTkcgICA9PiAkVGVzdC0+e1JlcXVlc3R9IC8vICcnLAogICAgKTsKCiAgICBDR0ktPmluaXRpYWxpemVfZ2xvYmFscygpOwogICAgbXkgJFJlcXVlc3QgPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0LT5uZXcoKTsKCiAgICBteSAlT2JqZWN0RGF0YSA9ICRPYmplY3RIYW5kbGVyT2JqZWN0LT5PYmplY3REYXRhR2V0KCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICBcJU9iamVjdERhdGEsCiAgICAgICAgICAgIHt9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIE9iamVjdERhdGFHZXQoKSB1bnN1Y2Nlc3NmdWwiLAogICAgICAgICk7CiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcJU9iamVjdERhdGEsCiAgICAgICAgJFRlc3QtPntFeGVjdGVkUmVzdWx0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBPYmplY3REYXRhR2V0KCkiLAogICAgKTsKfQpjb250aW51ZSB7CiAgICAkS2VybmVsOjpPTS0+T2JqZWN0c0Rpc2NhcmQoCiAgICAgICAgT2JqZWN0cyA9PiBbICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywgXSwKICAgICk7Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IFJlc3RvcmVEYXRhYmFzZQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIGFycmF5JywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU2luZ2xlIEludGVnZXInLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzFdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+ICcgKCAgdGVzdC50YWJsZSBJTiAoMSkgICkgJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdTb3J0ZWQgdmFsdWVzJywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFsgMiwgMSwgLTEsIDAgXSwKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiAnICggIHRlc3QudGFibGUgSU4gKC0xLCAwLCAxLCAyKSAgKSAnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0ludmFsaWQgdmFsdWUnLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzEuMV0sCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWl4IG9mIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcycsCiAgICAgICAgUGFyYW1zID0+IHsKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3Rlc3QudGFibGUnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiBbIDEsIDEuMSBdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IHVuZGVmLAogICAgfSwKKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyICRGQVFPYmplY3QtPl9JbkNvbmRpdGlvbkdldCggJXsgJFRlc3QtPntQYXJhbXN9IH0gKSwKICAgICAgICAkVGVzdC0+e1Jlc3VsdH0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gX0luQ29uZGl0aW9uR2V0KCkiCiAgICApOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJEZBUU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwpteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCm15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRJdGVtSUQsCiAgICB1bmRlZiwKICAgICJGQVFBZGQoKSAtIDEiLAopOwoKbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm15ICVGQVFUZXN0ID0gKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCik7Cgpmb3IgbXkgJFRlc3QgKCBzb3J0IGtleXMgJUZBUVRlc3QgKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUXskVGVzdH0sCiAgICAgICAgJEZBUVRlc3R7JFRlc3R9LAogICAgICAgICJGQVFHZXQoKSAtICRUZXN0IiwKICAgICk7Cn0KCm15ICRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICBJdGVtSUQgICAgICA9PiAkSXRlbUlELAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICBMYW5ndWFnZUlEICA9PiAyLAogICAgQXBwcm92ZWQgICAgPT4gMSwKICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQyJywKICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLjInLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uIGZvdW5kLi4uMicsCiAgICBVc2VySUQgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAopOwoKJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiVGQVFUZXN0ID0gKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dDInLAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICBMYW5ndWFnZUlEICA9PiAyLAogICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMyJywKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gZm91bmQuLi4yJywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKKTsKCmZvciBteSAkVGVzdCAoIHNvcnQga2V5cyAlRkFRVGVzdCApIHsKICAgICRTZWxmLT5JcygKICAgICAgICAkRkFRVGVzdHskVGVzdH0sCiAgICAgICAgJEZBUXskVGVzdH0sCiAgICAgICAgIkZBUUdldCgpIC0gJFRlc3QiLAogICAgKTsKfQoKbXkgJE9rID0gJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgIEl0ZW1JRCAgICA9PiAkSXRlbUlELAogICAgSVAgICAgICAgID0+ICc1NC40My4zMC4xJywKICAgIEludGVyZmFjZSA9PiAnMicsCiAgICBSYXRlICAgICAgPT4gMTAwLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRPaywKICAgICJWb3RlQWRkKCkiLAopOwoKbXkgJFZvdGUgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgSXRlbUlEICAgID0+ICRJdGVtSUQsCiAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgSW50ZXJmYWNlID0+ICcyJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwoKJFNlbGYtPklzKAogICAgJFZvdGUtPntJUH0sCiAgICAnNTQuNDMuMzAuMScsCiAgICAiVm90ZUdldCgpIC0gSVAiLAopOwoKbXkgJEl0ZW1JRDIgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUnLAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEl0ZW1JRDIsCiAgICAiRkFRQWRkKCkgLSAyIiwKKTsKCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgQEF0dGFjaG1lbnRUZXN0cyA9ICgKICAgIHsKICAgICAgICBGaWxlID0+ICdGQVEtVGVzdDEucGRmJywKICAgICAgICBNRDUgID0+ICc1ZWU3NjdmM2I2OGYyNGE5MjEzZTBiZWY4MmRjNTNlNScsCiAgICB9LAogICAgewogICAgICAgIEZpbGUgPT4gJ0ZBUS1UZXN0MS5kb2MnLAogICAgICAgIE1ENSAgPT4gJzJlNTIwMDM2YTBjZGE2YTgwNmE4ODM4YjEwMDBkOWQ3JywKICAgIH0sCik7CgojIGdldCBtYWluIG9iamVjdApteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7Cgpmb3IgbXkgJEF0dGFjaG1lbnRUZXN0IChAQXR0YWNobWVudFRlc3RzKSB7CiAgICBteSAkQ29udGVudFNDQUxBUlJlZiA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkSG9tZSAuICcvc2NyaXB0cy90ZXN0L3NhbXBsZS8nIC4gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICApOwogICAgbXkgJEFkZCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gJEl0ZW1JRDIsCiAgICAgICAgQ29udGVudCAgICAgPT4gJHskQ29udGVudFNDQUxBUlJlZn0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAkQXR0YWNobWVudFRlc3QtPntGaWxlfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBZGQsCiAgICAgICAgIkF0dGFjaG1lbnRBZGQoKSAtICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7CiAgICBteSBAQXR0YWNobWVudEluZGV4ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlEMiwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQyLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudEluZGV4WzBdLT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBGaWxlbmFtZSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwogICAgbXkgJE1ENSA9ICRNYWluT2JqZWN0LT5NRDVzdW0oCiAgICAgICAgU3RyaW5nID0+IFwkRmlsZXtDb250ZW50fSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJE1ENSwKICAgICAgICAkQXR0YWNobWVudFRlc3QtPntNRDV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBNRDUgJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0iLAogICAgKTsKCiAgICBteSAkRGVsZXRlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRDIsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50SW5kZXhbMF0tPntGaWxlSUR9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICREZWxldGUsCiAgICAgICAgIkF0dGFjaG1lbnREZWxldGUoKSAtICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7Cn0KCm15ICRWb3RlSURzUmVmID0gJEZBUU9iamVjdC0+Vm90ZVNlYXJjaCgKICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgVXNlcklEID0+IDEsCik7Cgpmb3IgbXkgJFZvdGVJRCAoIEB7JFZvdGVJRHNSZWZ9ICkgewogICAgbXkgJFZvdGVEZWxldGUgPSAkRkFRT2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgIFZvdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRWb3RlRGVsZXRlLAogICAgICAgICJWb3RlRGVsZXRlKCkiLAogICAgKTsKfQoKIyBhZGQgRkFRIGFydGljbGUgdG8gbG9nCm15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgSXRlbUlEICAgID0+ICRJdGVtSUQsCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUUxvZ0FkZCgpIC0gJEl0ZW1JRCIsCik7CgojIHRyeSB0byBhZGQgc2FtZSBGQVEgYXJ0aWNsZSB0byBsb2cgYWdhaW4gKG11c3QgcmV0dXJuIGZhbHNlKQokU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkSXRlbUlELAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPkZhbHNlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRTG9nQWRkKCkgLSAkSXRlbUlEIiwKKTsKCiMgYWRkIGFub3RoZXIgRkFRIGFydGljbGUgdG8gbG9nCiRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgSXRlbUlEICAgID0+ICRJdGVtSUQyLAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRJdGVtSUQyIiwKKTsKCiMgZ2V0IEZBUSBUb3AtMTAKbXkgJFRvcDEwSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIExpbWl0ICAgICA9PiAxMCwKICAgIFVzZXJJRCAgICA9PiAxLAopIHx8IFtdOwokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciBAeyRUb3AxMElEc1JlZn0sCiAgICAiRkFRVG9wMTBHZXQoKSIsCik7CgojIHRlc3QgTGFuZ3VhZ2VMb29rdXAoKQpteSAkTGFuZ3VhZ2VOYW1lID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJExhbmd1YWdlTmFtZSwKICAgICJMYW5ndWFnZUxvb2t1cCgpIGZvciBMYW5ndWFnZUlEICcxJyBpcyAnJExhbmd1YWdlTmFtZSciLAopOwoKbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgIE5hbWUgICA9PiAkTGFuZ3VhZ2VOYW1lLAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5JcygKICAgICRMYW5ndWFnZUlELAogICAgMSwKICAgICJMYW5ndWFnZUxvb2t1cCgpIGZvciBMYW5ndWFnZU5hbWUgJyRMYW5ndWFnZU5hbWUnIiwKKTsKCm15ICRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBJdGVtSUQ6ICRJdGVtSUQiLAopOwoKbXkgJEZBUURlbGV0ZTIgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRDIsCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlMiwKICAgICJGQVFEZWxldGUoKSAtIEl0ZW1JRDogJEl0ZW1JRDIiLAopOwoKbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdUZXN0Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SUQsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKIyBzZXQgUGFyZW50SUQgdG8gZW1wdHkgdG8gbWFrZSBpdCBmYWlsCm15ICRDYXRlZ29yeUlERmFpbCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ1Rlc3RDYXRlZ29yeScsCiAgICBDb21tZW50ICA9PiAnQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJycsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRDYXRlZ29yeUlERmFpbCwKICAgICJDYXRlZ29yeUFkZCgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgpteSAkQ2F0ZWdvcnlVcGRhdGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICBQYXJlbnRJRCAgID0+IDAsCiAgICBOYW1lICAgICAgID0+ICdSb290Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgICA9PiAnUm9vdCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBWYWxpZElEICAgID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeVVwZGF0ZSwKICAgICJDYXRlZ29yeVVwZGF0ZSgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgojIHNldCBQYXJlbnRJRCB0byBlbXB0eSB0byBtYWtlIGl0IGZhaWwKbXkgJENhdGVnb3J5VXBkYXRlRmFpbCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VXBkYXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFBhcmVudElEICAgPT4gJycsCiAgICBOYW1lICAgICAgID0+ICdSb290Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgICA9PiAnUm9vdCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBWYWxpZElEICAgID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkQ2F0ZWdvcnlVcGRhdGVGYWlsLAogICAgIkNhdGVnb3J5VXBkYXRlKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCm15ICRDaGlsZENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdDaGlsZENhdGVnb3J5JywKICAgIENvbW1lbnQgID0+ICdDaGlsZCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2hpbGRDYXRlZ29yeUlELAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgpteSAkQ2hpbGRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2hpbGRDYXRlZ29yeUlELAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2hpbGRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKbXkgJENhdGVnb3J5RGVsZXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKI0l0ZW1GaWVsZEdldCBUZXN0cwpteSAlVGVzdEZpZWxkcyA9ICgKICAgIEZpZWxkMSA9PiAnU3ltcHRvbS4uLicsCiAgICBGaWVsZDIgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQzID0+ICdTb2x1dGlvbi4uLicsCiAgICBGaWVsZDQgPT4gJ1VzZXIgRmllbGQ0Li4uJywKICAgIEZpZWxkNSA9PiAnVXNlciBGaWVsZDUuLi4nLAogICAgRmllbGQ2ID0+ICdDb21tZW50Li4uJywKKTsKCiRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVGVzdEZpZWxkcywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEl0ZW1JRCwKICAgICJGQVFBZGQoKSBmb3IgSXRlbUZpZWxkR2V0IHdpdGggVHJ1ZSIsCik7CgpteSAlUmVzdWx0RmllbGRzOwoKbXkgJENoZWNrRmllbGRzID0gc3ViIHsKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIGZvciBteSAkRmllbGRDb3VudCAoIDEgLi4gNiApIHsKICAgICAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgICAgICMgY2hlY2sgdGhhdCBjYWNoZSBpcyBjbGVhbgogICAgICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgID0+ICJJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBvbiBiZWZvcmUgZmlyc3QgR2V0IGNhY2hlIHNob3VsZCBiZSB1bmRlZiwgYWZ0ZXIgZmlycyBjYWNoZSBleGlzdCwgYnV0IHRoZSBGaWVsZCBrZXkgbXVzdCBiZQogICAgICAgICMgdW5kZWYKICAgICAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ2FjaGUtPnskRmllbGR9LAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAiQ2FjaGUgYmVmb3JlIEl0ZW1GaWVsZEdldCgpOiAkRmllbGQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJENhY2hlLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAiQ2FjaGUgYmVmb3JlIEl0ZW1GaWVsZEdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgZmllbGQKICAgICAgICAkUmVzdWx0RmllbGRzeyRGaWVsZH0gPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBGaWVsZCAgPT4gJEZpZWxkLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGNhY2hlIGlzIHNldAogICAgICAgICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgID0+ICJJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICByZWYgJENhY2hlLAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJDYWNoZSBhZnRlciBJdGVtRmllbGRHZXQoKTogcmVmIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJENhY2hlLT57JEZpZWxkfSwKICAgICAgICAgICAgJFBhcmFte0NvbXBhcmVGaWVsZHN9LT57JEZpZWxkfSwKICAgICAgICAgICAgIkNhY2hlIGFmdGVyIEl0ZW1GaWVsZEdldCgpOiAkRmllbGQgbWF0Y2hlZCB3aXRoIG9yaWdpbmFsIGZpZWxkIGRhdGEiLAogICAgICAgICk7CiAgICB9Cn07CgokQ2hlY2tGaWVsZHMtPiggQ29tcGFyZUZpZWxkcyA9PiBcJVRlc3RGaWVsZHMgKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFwlUmVzdWx0RmllbGRzLAogICAgXCVUZXN0RmllbGRzLAogICAgIkl0ZW1GaWVsZEdldCgpOiBmb3IgYWxsIGZpZWxkcyBtYXRjaCBleHBlY3RlZCBkYXRhIiwKKTsKCiMgdXBkYXRlIHRoZSBGQVEgaXRlbQpteSAlVXBkYXRlZFRlc3RGaWVsZHMgPSAoCiAgICBGaWVsZDEgPT4gJ1VwZGF0ZWQgU3ltcHRvbS4uLicsCiAgICBGaWVsZDIgPT4gJ1VwZGF0ZWQgUHJvYmxlbS4uLicsCiAgICBGaWVsZDMgPT4gJ1VwZGF0ZWQgU29sdXRpb24uLi4nLAogICAgRmllbGQ0ID0+ICdVcGRhdGVkIFVzZXIgRmllbGQ0Li4uJywKICAgIEZpZWxkNSA9PiAnVXBkYXRlZCBVc2VyIEZpZWxkNS4uLicsCiAgICBGaWVsZDYgPT4gJ1VwZGF0ZWQgQ29tbWVudC4uLicsCik7CgokRkFRVXBkYXRlID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgJVVwZGF0ZWRUZXN0RmllbGRzLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRVXBkYXRlLAogICAgIkZBUVVwZGF0ZSgpIGZvciBJdGVtRmllbGRHZXQgd2l0aCBUcnVlIiwKKTsKCiRDaGVja0ZpZWxkcy0+KCBDb21wYXJlRmllbGRzID0+IFwlVXBkYXRlZFRlc3RGaWVsZHMgKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIGZvciBJdGVtRmllbGRHZXQ6IHdpdGggVHJ1ZSIsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAiSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OiRJdGVtSUQiLAopOwoKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEl0ZW1GaWVsZEdldCgpIGFmdGVyIEZBUURlbGV0ZTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBGQVEgaXRlbSBjYWNoZSB0ZXN0cwokSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgJVRlc3RGaWVsZHMsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkSXRlbUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBCZWZvcmUgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkSXRlbUlEIC4gJzo6SXRlbUZpZWxkczo6MScsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEJlZm9yZSBGQVFHZXQoKTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBnZXQgRkFRIG5vIEl0ZW0gRmllbGRzCm15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgSXRlbUZpZWxkcyA9PiAwLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEl0ZW1JRCwKICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBtYXRjaCBJdGVtSUQiCik7CgojIHNhbml0eSBjaGVjayBJdGVtIEZpZWxkcwpmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgJFNlbGYtPklzKAogICAgICAgICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IG5vIEl0ZW1GaWVsZHMgJEZpZWxkIiwKICAgICk7Cn0KJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkSXRlbUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkQ2FjaGUsCiAgICAnSEFTSCcsCiAgICAiQ2FjaGUgZm9yIEZBUSBObyBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwokQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRJdGVtSUQgLiAnOjpJdGVtRmllbGRzOjoxJywKKTsKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEZBUSBXaXRoIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKCiMgZ2V0IEZBUSB3aXRoIEl0ZW0gRmllbGRzCiVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEl0ZW1JRCwKICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBtYXRjaCBJdGVtSUQiCik7CgojIHNhbml0eSBjaGVjayBJdGVtIEZpZWxkcwpmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IHdpdGggSXRlbUZpZWxkcyAkRmllbGQiLAogICAgKTsKfQokQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRJdGVtSUQgLiAnOjpJdGVtRmllbGRzOjowJywKKTsKJFNlbGYtPklzKAogICAgcmVmICRDYWNoZSwKICAgICdIQVNIJywKICAgICJDYWNoZSBmb3IgRkFRIE5vIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIHJlZiIsCik7CiRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEl0ZW1JRCAuICc6Okl0ZW1GaWVsZHM6OjEnLAopOwokU2VsZi0+SXMoCiAgICByZWYgJENhY2hlLAogICAgJ0hBU0gnLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwoKIwojIEZBUSBTdGF0ZSB0ZXN0cwojCm15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5Jc05vdCgKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAwLAogICAgIlN0YXRlTGlzdCgpIG51bWJlciBvZiBlbGVtZW50cyBzaG91bGQgbm90IGJlIDAiCik7Cgpmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlcyApIHsKICAgIG15ICVTdGF0ZSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1N0YXRlSUR9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIFN0YXRlSUQgZm9yIFN0YXRlSUQ6ICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle05hbWV9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIE5hbWUgZm9yIFN0YXRlSUQ6ICAgICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1R5cGVJRH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlN0YXRlR2V0KCkgVHlwZUlEIGZvciBTdGF0ZUlEOiAgJyRTdGF0ZUlEJyBzaG91bGQgbm90IGJlIHVuZGVmIgogICAgKTsKfQoKJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFR5cGVzICA9PiBbJ2ludGVybmFsJ10sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAxLAogICAgIlN0YXRlTGlzdCgpIGhhcyAxIGtleSIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVzezJ9LAogICAgJ2ludGVybmFsIChhZ2VudCknLAogICAgIlN0YXRlTGlzdCgpIDIgaXMgaW50ZXJuYWwiLAopOwoKJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnZXh0ZXJuYWwnIF0sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAyLAogICAgIlN0YXRlTGlzdCgpIGhhcyAyIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlc3sxfSwKICAgICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICJTdGF0ZUxpc3QoKSAxIGlzIGV4dGVybmFsIiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZXN7M30sCiAgICAncHVibGljIChhbGwpJywKICAgICJTdGF0ZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgpteSAkU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHJlZiAkU3RhdGVUeXBlTGlzdCwKICAgICdIQVNIJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgcmV0dXJucyBoYXNocmVmIiwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICV7JFN0YXRlVHlwZUxpc3R9LAogICAgMywKICAgICJTdGF0ZVR5cGVMaXN0KCkgaGFzIDMga2V5cyIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezF9LAogICAgJ2ludGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMSBpcyBpbnRlcm5hbCIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezJ9LAogICAgJ2V4dGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMiBpcyBleHRlcm5hbCIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezN9LAogICAgJ3B1YmxpYycsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDMgaXMgcHVibGljIiwKKTsKCiRTdGF0ZVR5cGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnZXh0ZXJuYWwnIF0sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICV7JFN0YXRlVHlwZUxpc3R9LAogICAgMiwKICAgICJTdGF0ZVR5cGVMaXN0KCkgaGFzIDIga2V5cyIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezJ9LAogICAgJ2V4dGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMiBpcyBleHRlcm5hbCIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezN9LAogICAgJ3B1YmxpYycsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDMgaXMgcHVibGljIiwKKTsKCiRTdGF0ZVR5cGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFR5cGVzICA9PiBbJ2ludGVybmFsJ10sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICV7JFN0YXRlVHlwZUxpc3R9LAogICAgMSwKICAgICJTdGF0ZVR5cGVMaXN0KCkgaGFzIDEga2V5IiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZVR5cGVMaXN0LT57MX0sCiAgICAnaW50ZXJuYWwnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAxIGlzIGludGVybmFsIiwKKTsKCiMgQ29udGVudFR5cGVTZXQoKSB0ZXN0cwoKbXkgJEZBUUl0ZW1JRDEgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywgICAgIyAob3B0aW9uYWwpCiAgICBWYWxpZElEICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLCAgICAjIG9yICd0ZXh0L2h0bWwnCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICB1bmRlZiwKICAgICRGQVFJdGVtSUQxLAogICAgIkZBUUFkZCgpIgopOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDxiciAvPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tIDxiciAvPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9saT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGxpPlN5bXB0b20gPC9saT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvb2w+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxvbD5TeW1wdG9tIDwvb2w+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3VsPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dWw+U3ltcHRvbSA8L3VsPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC90YWJsZT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHRhYmxlPlN5bXB0b20gPC90YWJsZT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvdHI+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzx0cj5TeW1wdG9tIDwvdHI+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3RkPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dGQ+U3ltcHRvbSA8L3RkPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC90ZD4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHRkPlN5bXB0b20gPC90ZD4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvZGl2PicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8ZGl2PlN5bXB0b20gPC9kaXY+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L28+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxvPlN5bXB0b20gPC9vPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9zcGFuPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8c3Bhbj5TeW1wdG9tIDwvc3Bhbj4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvcD4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHA+U3ltcHRvbSA8L3A+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3ByZT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHByZT5TeW1wdG9tIDwvcHJlPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9oMT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGgxPlN5bXB0b20gPC9oMT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvaDk+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxoOT5TeW1wdG9tIDwvaDk+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCBvdXQgSFRNTCB0YWdzJywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20gJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L3BsYWluJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC91PicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dT5TeW1wdG9tIDwvdT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L2RpYj4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGRpYj5TeW1wdG9tIDwvZGliPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvc3BhbT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHNwYW0+U3ltcHRvbSA8L3NwYW0+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L3BsYWluJywKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgZm9yIG15ICRDb250ZW50VHlwZVJhdyAocXcoYXV0byB0ZXh0L3BsYWluIHRleHQvaHRtbCkpIHsKCiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJENvbnRlbnRUeXBlUmF3IGVxICdhdXRvJyA/ICcnIDogJENvbnRlbnRUeXBlUmF3OwoKICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0LT57SXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICV7ICRUZXN0LT57VXBkYXRlfSB9LAogICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3QtPntJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUNvbnRlbnRUeXBlU2V0KAogICAgICAgICAgICBGQVFJdGVtSURzICA9PiBbICRUZXN0LT57SXRlbUlEfSBdLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEV4cGVjdGVkUmVzdWx0ID0gJENvbnRlbnRUeXBlUmF3IGVxICdhdXRvJyA/ICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRBdXRvfSA6ICRDb250ZW50VHlwZTsKCiAgICAgICAgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdC0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJEZBUURhdGF7Q29udGVudFR5cGV9LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ29udGVudFR5cGUgYWZ0ZXIgc2V0IHRvICRDb250ZW50VHlwZVJhdyIsCiAgICAgICAgKTsKICAgIH0KfQoKJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICBVc2VySUQgPT4gMSwKKTsKJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICVGQVFEYXRhLAogICAgSXRlbUlEICA9PiAkRkFRSXRlbUlEMSwKICAgIFZhbGlkSUQgPT4gMiwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRVXBkYXRlLAogICAgIkZBUVVwZGF0ZSgpIHNldCBGQVEgJEZBUUl0ZW1JRDEgdG8gaW52YWxpZCIsCik7CgpteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFR5cGVzICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgIFVzZXJJRCA9PiAxLAopOwoKbXkgJEFydGljbGVDb3VudCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCBdLAogICAgSXRlbVN0YXRlcyAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgIFZhbGlkICAgICAgID0+IDAsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkQXJ0aWNsZUNvdW50LAogICAgMCwKICAgICJGQVFDb3VudCgpIFZhbGlkIGFuZCBJbnZhbGlkIiwKKTsKCm15ICRBcnRpY2xlQ291bnRWYWxpZCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCBdLAogICAgSXRlbVN0YXRlcyAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgIFZhbGlkICAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkQXJ0aWNsZUNvdW50VmFsaWQsCiAgICAwLAogICAgIkZBUUNvdW50KCkgVmFsaWQiLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUNvdW50VmFsaWQgPCAkQXJ0aWNsZUNvdW50ID8gMSA6IDAsCiAgICAiVmFsaWQgSXRlbXMgYXJlIGxlc3MgdGhhbiBWYWxpZCBhbmQgSW52YWxpZCAoJEFydGljbGVDb3VudFZhbGlkIDwgJEFydGljbGVDb3VudCkgd2l0aCB0cnVlIiwKKTsKCiMgVGVzdCBGQVFDb3VudCgpIHdpdGggbXVsdGlwbGUgQ2F0ZWdvcmllcywgc2VlIGJ1ZyM3OTgwLgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwpteSBAQ2F0ZWdvcnlJRHM7Cm15ICRDb3VudCA9IDA7CmZvciBteSAkSW5kZXggKCAxIC4uIDMgKSB7CgogICAgIyBDcmVhdGUgdGVzdCBDYXRlZ29yeS4KICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgTmFtZSAgICAgPT4gJEluZGV4IC4gJ0NhdGVnb3J5JyAuICRSYW5kb21JRCwKICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQ2F0ZWdvcnlJRCwKICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBjcmVhdGVkIgogICAgKTsKICAgIHB1c2ggQENhdGVnb3J5SURzLCAkQ2F0ZWdvcnlJRDsKCiAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgICA9PiAkSW5kZXggLiAnRkFRJyAuICRSYW5kb21JRCwKICAgICAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUlELAogICAgICAgICJGQVFJRCAkRkFRSUQgaXMgY3JlYXRlZCIKICAgICk7CgogICAgJENvdW50Kys7Cn0KCm15ICRNdWx0aUNhdGVnb3J5QXJ0aWNsZUNvdW50ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICBDYXRlZ29yeUlEcyA9PiBbQENhdGVnb3J5SURzXSwKICAgIEl0ZW1TdGF0ZXMgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICBWYWxpZCAgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKJFNlbGYtPklzKAogICAgJE11bHRpQ2F0ZWdvcnlBcnRpY2xlQ291bnQsCiAgICAkQ291bnQsCiAgICAiRkFRQ291bnQoKSB3aXRoIG11bHRpcGxlIENhdGVnb3JpZXMgc3VjY2VzcyIKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgc2V0IGNvbmZpZyBvcHRpb25zCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPlNldCgKICAgIEtleSAgID0+ICdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgZ2VuZXJhdGUgYSByYW5kb20gc3RyaW5nIHRvIGhlbHAgc2VhcmNoZXMKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiMgY3JlYXRlIGRpZmZlcmVudCB1c2VycyBmb3IgQ3JlYXRlZFVzZXJJRHMgc2VhcmNoCm15IEBBZGRlZFVzZXJzOwpmb3IgbXkgJENvdW50ZXIgKCAxIC4uIDQgKSB7CiAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICk7CiAgICBteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICApOwogICAgcHVzaCBAQWRkZWRVc2VycywgJFVzZXJJRDsKfQoKbXkgQEFkZGVkRkFRczsKCiMgYWRkIHNvbWUgRkFRcwpteSAlRkFRQWRkVGVtcGxhdGUgPSAoCiAgICBUaXRsZSAgICAgICA9PiAiU29tZSBUZXh0ICRSYW5kb21JRCIsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAkUmFuZG9tSUQsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgVXNlcklEICAgICAgPT4gMSwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAopOwoKIyBmcmVlemUgdGltZQokSGVscGVyLT5GaXhlZFRpbWVTZXQoKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCmZvciBteSAkQ291bnRlciAoIDEgLi4gMiApIHsKICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgJUZBUUFkZFRlbXBsYXRlLAogICAgICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1sgJENvdW50ZXIgLSAxIF0sCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICB1bmRlZiwKICAgICAgICAkSXRlbUlELAogICAgICAgICJGQVFBZGQoKSBJdGVtSUQ6JyRJdGVtSUQnIGZvciBGQVFTZWFyY2goKSIsCiAgICApOwoKICAgIHB1c2ggQEFkZGVkRkFRcywgJEl0ZW1JRDsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7Cn0KCiMgYWRkIHNvbWUgdm90ZXMKbXkgQFZvdGVzVG9BZGQgPSAoCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gMTAwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMF0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMycsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICB9LAogICAgewogICAgICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEFkZGVkRkFRc1sxXSwKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnMicsCiAgICAgICAgUmF0ZSAgICAgID0+IDUwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMV0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCgopOwpmb3IgbXkgJFZvdGUgKEBWb3Rlc1RvQWRkKSB7CiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVBZGQoICV7JFZvdGV9ICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlZvdGVBZGQoKTogSXRlbUlEOickVm90ZS0+e0l0ZW1JRH0nIElQOickVm90ZS0+e0lQfScgUmF0ZTonJFZvdGUtPntSYXRlfScgd2l0aCB0cnVlIiwKICAgICk7Cn0KCiMgZG8gdm90ZSBzZWFyY2ggdGVzdHMKbXkgJVNlYXJjaENvbmZpZ1RlbXBsYXRlID0gKAogICAgS2V5d29yZCAgICAgICAgICA9PiAiJFJhbmRvbUlEIiwKICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0ZBUUlEJ10sCiAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgVXNlcklEICAgICAgICAgICA9PiAxLAoKKTsKbXkgQFRlc3RzID0gKAoKICAgICMgdm90ZXMgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgU2ltcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgU21hbGxlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gMywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiBbIDIsIDMgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAxLCAyIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFsgMiwgMyBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgMywgMiBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFsgMiwgMyBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFdyb25nIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIExlc3NUaGFuRXF1YWxzID0+IFs0XQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBDb21wbGV4IE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBTaW1wbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIFJhdGUgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBHcmVhdGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IDY2LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDY3LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiBbIDUwLCA2Ni42NyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEdyZWF0ZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgNDAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBHcmVhdGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFsgNTAsIDY2IF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgNjYsIDYwIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFsgNTAsIDY3IF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBXcm9uZyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIExlc3NUaGFuRXF1YWxzID0+IFsxMF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBDb21wbGV4IE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gWyA1MCwgNjAgXSwKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDY3LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbXBsZXggdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBSYXRlLCBDb21wbGV4ICsgV3JvbmcgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gWyAyLCAzLCA0IF0sCiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBbM10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgIDUwIF0sCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiBbIDEwMCwgMTIwIF0sCiAgICAgICAgICAgICAgICBMb3dlclRoYW4gICA9PiBbOTldLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcQEl0ZW1JRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgb3RoZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnU3RhdGVzIEhhc2ggQ29ycmVjdCBJRHMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgIDEgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgIDIgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgIDMgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWyAkQWRkZWRGQVFzWzBdLCAkQWRkZWRGQVFzWzFdIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU3RhdGVzIEhhc2ggSW5jb3JyZWN0IElEcyAoRmxvYXQpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAxLjEgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgIDIuMiA9PiAnRXh0ZXJuYWwnLAogICAgICAgICAgICAgICAgMy4zID0+ICdQdWJsaWMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1N0YXRlcyBIYXNoIEluY29ycmVjdCBJRHMgKFN0cmluZyknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgICdJbnRlcm5hbCcgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgICdFeHRlcm5hbCcgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgICdQdWJsaWMnICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gW10sCiAgICB9LAoKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcQEl0ZW1JRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgdGltZSBiYXNlZCB0ZXN0cwoKIyB1cGRhdGUgRkFRcwpteSAlRkFRVXBkYXRlVGVtcGxhdGUgPSAoCiAgICBUaXRsZSAgICAgICA9PiAiTmV3IFRleHQgJFJhbmRvbUlEIiwKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICRSYW5kb21JRCwKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBVc2VySUQgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCik7CgojIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQokSGVscGVyLT5GaXhlZFRpbWVBZGRTZWNvbmRzKDYwKTsKCm15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgJUZBUVVwZGF0ZVRlbXBsYXRlLAogICAgSXRlbUlEID0+ICRBZGRlZEZBUXNbMF0sCiAgICBVc2VySUQgPT4gJEFkZGVkVXNlcnNbMl0sCik7CgokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUVVwZGF0ZSgpIEl0ZW1JRDonJEFkZGVkRkFRc1swXScgZm9yIEZBUVNlYXJjaCgpIiwKKTsKCiRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAlRkFRVXBkYXRlVGVtcGxhdGUsCiAgICBJdGVtSUQgPT4gJEFkZGVkRkFRc1sxXSwKICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1szXSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRVXBkYXRlKCkgSXRlbUlEOickQWRkZWRGQVFzWzFdJyBmb3IgRkFRU2VhcmNoKCkiLAopOwoKIyBhZGQgMiBtaW51dGVzIHRvIGZyb3plbiB0aW1lCiRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoMTIwKTsKCm15ICREYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKIyBTdWJ0cmFjdCAyIG1pbnV0ZXMuCiREYXRlVGltZS0+U3VidHJhY3QoIFNlY29uZHMgPT4gMTIxICk7Cm15ICREYXRlTWludXMyTWlucyA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKCiMgU3VidHJhY3QgdG90YWx5IDUgbWludXRlcy4KJERhdGVUaW1lLT5TdWJ0cmFjdCggU2Vjb25kcyA9PiAxODAgKTsKbXkgJERhdGVNaW51czVNaW5zID0gJERhdGVUaW1lLT5Ub1N0cmluZygpOwoKIyBTdWJ0cmFjdCB0b3RhbHkgNiBtaW51dGVzLgokRGF0ZVRpbWUtPlN1YnRyYWN0KCBTZWNvbmRzID0+IDYwICk7Cm15ICREYXRlTWludXM2TWlucyA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKCkBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgMyBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gMywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJNaW51dGVzIDYgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzID0+IDYsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU5ld2VyTWludXRlcyA2IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyTWludXRlcyA9PiA2LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgNSBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gNSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJEYXRlIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICREYXRlTWludXM1TWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lTmV3ZXJEYXRlIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXM1TWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJEYXRlIENyZWF0ZVRpbWVOZXdlckRhdGUnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJERhdGVNaW51czZNaW5zLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ2hhbmdlVGltZU9sZGVyTWludXRlcyAzIG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZU9sZGVyTWludXRlcyA9PiAzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVOZXdlck1pbnV0ZXMgMiBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMiwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lT2xkZXJEYXRlIDIgTWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICREYXRlTWludXMyTWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lTmV3ZXJEYXRlIDIgTWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXMyTWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0KKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBJdGVtSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGNyZWF0ZWQgdXNlciB0ZXN0cwpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMV0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxIGFuZCAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0sICRBZGRlZFVzZXJzWzFdIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgQ3JlYXRlZFVzZXJJRHMgRm9ybWF0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgbGFzdCBjaGFuZ2VkIHVzZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnTGFzdENoYW5nZWRVc2VySURzIDMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMl0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMgNCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcyAzIGFuZCA0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbICRBZGRlZFVzZXJzWzJdLCAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1dyb25nIExhc3RDaGFuZ2VkVXNlcklEcyBGb3JtYXQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzJdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBJdGVtSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGFwcHJvdmFsIHRlc3RzCiMgdXBkYXRlIGRhdGFiYXNlIHRvIHByZXZlbnQgZ2VuZXJhdGlvbiBvZiBhcHByb3ZhbCB0aWNrZXQKcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICBTUUwgPT4gJwogICAgICAgIFVQREFURSBmYXFfaXRlbQogICAgICAgIFNFVCBhcHByb3ZlZCA9ID8KICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgQmluZCA9PiBbCiAgICAgICAgXDAsCiAgICAgICAgXCRBZGRlZEZBUXNbMV0sCiAgICBdLAopOwoKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnQXBwcm92ZWQgMScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBBcHByb3ZlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0FwcHJvdmVkIDAnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gMCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCik7CgojIGV4ZWN1dGUgdGhlIHRlc3RzCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgQEl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxASXRlbUlEcywKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRkFRU2VhcmNoKCkiLAogICAgKTsKfQoKIyBleGVjdXRlIG9sZCB0ZXN0cwokU2VsZi0+VHJ1ZSgKICAgIDEsCiAgICAiLS1FeGVjdXRlIEZvcm1lciBUZXN0cy0tIiwKKTsKewogICAgbXkgJEl0ZW1JRDEgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgIExhbmd1YWdlSUQgID0+IDIsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICAgICAgS2V5d29yZHMgICAgPT4gInNvbWUkUmFuZG9tSUQga2V5d29yZHMyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLjInLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEl0ZW1JRDEsCiAgICAgICAgIkZBUUFkZCgpIC0gMSIsCiAgICApOwoKICAgICMgYWRkIDEgbWludXRlIHRvIGZyb3plbiB0aW1lCiAgICAkSGVscGVyLT5GaXhlZFRpbWVBZGRTZWNvbmRzKDYwKTsKCiAgICBteSAkSXRlbUlEMiA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUnIC4gJFJhbmRvbUlELAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQyLAogICAgICAgICJGQVFBZGQoKSAtIDIiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJUtleXdvcmRzID0gKAogICAgICAgIEtleXdvcmQxID0+ICJzb21lMSRSYW5kb21JRCIsCiAgICAgICAgS2V5d29yZDIgPT4gInNvbWUyJFJhbmRvbUlEIiwKICAgICAgICBLZXl3b3JkMyA9PiAic29tZTMkUmFuZG9tSUQiLAogICAgICAgIEtleXdvcmQ0ID0+ICJzb21lNCRSYW5kb21JRCIsCiAgICAgICAgS2V5d29yZDUgPT4gInNvbWU1JFJhbmRvbUlEIiwKICAgICk7CgogICAgbXkgJEl0ZW1JRDMgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1Rlc3QgRkFRLTMnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIEtleXdvcmRzICAgID0+ICIkS2V5d29yZHN7S2V5d29yZDF9ICRLZXl3b3Jkc3tLZXl3b3JkMn0gJEtleXdvcmRze0tleXdvcmQzfSAkS2V5d29yZHN7S2V5d29yZDV9IiwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQzLAogICAgICAgICJGQVFBZGQoKSAtIDMiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJEl0ZW1JRDQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAnVGVzdCBGQVEtNCcsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgS2V5d29yZHMgICA9PiAiJEtleXdvcmRze0tleXdvcmQxfSwkS2V5d29yZHN7S2V5d29yZDJ9LCRLZXl3b3Jkc3tLZXl3b3JkM30sJEtleXdvcmRze0tleXdvcmQ0fSIsCiAgICAgICAgLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQ0LAogICAgICAgICJGQVFBZGQoKSAtIDQiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJEl0ZW1JRDUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAnVGVzdCBGQVEtNScsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgS2V5d29yZHMgICA9PiAiJEtleXdvcmRze0tleXdvcmQxfTskS2V5d29yZHN7S2V5d29yZDJ9OyRLZXl3b3Jkc3tLZXl3b3JkM307JEtleXdvcmRze0tleXdvcmQ0fSIsCiAgICAgICAgLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQ1LAogICAgICAgICJGQVFBZGQoKSAtIDQiLAogICAgKTsKCiAgICAjIHJlc3RvcmUgdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lVW5zZXQoKTsKCiAgICBAVGVzdHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFdoYXQgICAgPT4gJypzKicsCiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICJzb21lJFJhbmRvbUlEKiIsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnVm90ZXMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQxLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIHdpdGggc3BhY2VzIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX0gJEtleXdvcmRze0tleXdvcmQyfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgd2l0aCBjb21tYSAtIGFsbCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICIkS2V5d29yZHN7S2V5d29yZDJ9LCRLZXl3b3Jkc3tLZXl3b3JkMX0iLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDMsCiAgICAgICAgICAgICAgICAkSXRlbUlENCwKICAgICAgICAgICAgICAgICRJdGVtSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIHdpdGggc2VtaWNvbG9uIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX07JEtleXdvcmRze0tleXdvcmQyfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMxIEtleXdvcmRzMyAgd2l0aCBzcGFjZXMgLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfSAkS2V5d29yZHN7S2V5d29yZDN9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkczEgS2V5d29yZHMzIHdpdGggY29tbWEgLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfSwkS2V5d29yZHN7S2V5d29yZDN9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkczEgS2V5d29yZHMzIHdpdGggc2VtaWNvbG9uIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX07JEtleXdvcmRze0tleXdvcmQzfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgY29tbW9uIGtleXdvcmQnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZHN7S2V5d29yZDN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDMsCiAgICAgICAgICAgICAgICAkSXRlbUlENCwKICAgICAgICAgICAgICAgICRJdGVtSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIGNvbW1vbiBrZXl3b3JkIHdpdGggd2lsZGNhcmRzJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJyonIC4gJEtleXdvcmRze0tleXdvcmQzfSAuICcqJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ1JywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmRze0tleXdvcmQ1fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIG9ubHkgS2V5d29yZDQnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZHN7S2V5d29yZDR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ1IC0gdXBwZXJjYXNlIHN0cmluZycsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+IHVjICRLZXl3b3Jkc3tLZXl3b3JkNX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ0IC0gZmlyc3QgY2hhcmFjdGVyIHVwcGVyY2FzZScsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+IHVjZmlyc3QgJEtleXdvcmRze0tleXdvcmQ0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgPT4gJ3RJVExlJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICwKICAgICAgICAgICAgICAgIFdoYXQgICAgPT4gJ2wnLAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQyLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ1doYXQgKExpdGVyYWwpJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJycsCiAgICAgICAgICAgICAgICBXaGF0ICAgID0+ICdzb2x1dGlvbiBmb3VuZCcsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnQ3JlYXRlZCddLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDEsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnV2hhdCAoQU5EKScsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICcnLAogICAgICAgICAgICAgICAgV2hhdCAgICA9PiAnc29sdXRpb24rZm91bmQnLAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQxLAogICAgICAgICAgICAgICAgJEl0ZW1JRDIsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAgICAgbXkgQEl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJyonLAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCcgXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICV7ICRUZXN0LT57Q29uZmlnfSB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXEBJdGVtSURzLAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9LCBGQVFTZWFyY2goKSIsCiAgICAgICAgKTsKICAgIH0KfQoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgcmVzdG9yZSBkYXRhYmFzZQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkVXNlck9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiMgc2V0IGNvbmZpZyBvcHRpb25zCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnLAogICAgVmFsdWUgPT4gMCwKKTsKCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdDdXN0b21lckdyb3VwU3VwcG9ydCcsCiAgICBWYWx1ZSA9PiAwLAopOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICd1c2VycycsIF0sCik7Cm15ICRUZXN0VXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCik7CgpteSAkQWRtaW5Vc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKbXkgJEFkbWluVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJEFkbWluVXNlckxvZ2luLAopOwoKIyBjcmVhdGUgc29tZSBjdXN0b21lciB1c2VycwpteSBAQ3VzdG9tZXJVc2VyczsKZm9yICggMCAuLiAxICkgewogICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CiAgICBwdXNoIEBDdXN0b21lclVzZXJzLCAkVGVzdFVzZXJMb2dpbjsKfQoKbXkgJFJhbmRvbU51bWJlciA9ICRIZWxwZXItPkdldFJhbmRvbU51bWJlcigpOwoKbXkgJVN0YXRlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFVzZXJJRCA9PiAkQWRtaW5Vc2VySUQsCik7Cm15ICVSZXZlcnNlU3RhdGVMaXN0ID0gcmV2ZXJzZSAlU3RhdGVMaXN0OwoKIyBDYWxsIHRoaXMgZnVuY3Rpb24gYXQgdGhlIGJlZ2lubmluZywgdG8gY2hlY2sgaWYgdGhlIGNhY2hlIGNsZWFudXAgd29ya3MgY29ycmVjdGx5IGFmdGVyIG5ldyBhcnRpY2xlIHdhcyBjcmVhdGVkLgokRkFRT2JqZWN0LT5GQVFLZXl3b3JkQXJ0aWNsZUxpc3QoCiAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICBVc2VySUQgICAgICAgPT4gJEFkbWluVXNlcklELAopOwoKIyBkZWZpbmUgdGhlIHRpY2tldHMgZm9yIHRoZSBzdGF0aXN0aWMgcmVzdWx0IHRlc3RzCm15IEBGQVFJdGVtcyA9ICgKICAgIHsKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+ICRSZXZlcnNlU3RhdGVMaXN0eydleHRlcm5hbCAoY3VzdG9tZXIpJ30sICAgICMgJ2V4dGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgPT4KICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgZXhhbXBsZSRSYW5kb21OdW1iZXIgJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICB9LAogICAgewogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQgRXhhbXBsZScsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9LCAgICAjICdleHRlcm5hbCcKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdlbicKICAgICAgICBLZXl3b3JkcyAgICA9PiAiZmFxJFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJEFkbWluVXNlcklELAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IEV4YW1wbGUnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gJFJldmVyc2VTdGF0ZUxpc3R7J2V4dGVybmFsIChjdXN0b21lciknfSwgICAgICAgICAgICAgICAgICAgICMgJ2V4dGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdkZScKICAgICAgICBLZXl3b3JkcyAgICA9PiAiZmFxJFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJdFNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJEFkbWluVXNlcklELAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IFB1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsncHVibGljIChhbGwpJ30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgICAgPT4gIkZBUSRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgcHVibGljJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJEFkbWluVXNlcklELAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IEludGVybmFsJywKICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgID0+ICRSZXZlcnNlU3RhdGVMaXN0eydpbnRlcm5hbCAoYWdlbnQpJ30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdpbnRlcm5hbCcKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgICAgPT4gInRpY2tldCRSYW5kb21OdW1iZXIgS2V5V29yZCRSYW5kb21OdW1iZXIgaVRzbSRSYW5kb21OdW1iZXIgaW50ZXJuYWwkUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICB9LAogICAgewogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQgSW50ZXJuYWwnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gJFJldmVyc2VTdGF0ZUxpc3R7J2ludGVybmFsIChhZ2VudCknfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2ludGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdlbicKICAgICAgICBLZXl3b3JkcyAgICA9PiAidGlja2V0JFJhbmRvbU51bWJlciBLZXlXb3JkJFJhbmRvbU51bWJlciBpVHNtJFJhbmRvbU51bWJlciBpbnRlcm5hbCRSYW5kb21OdW1iZXIiLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRBZG1pblVzZXJJRCwKICAgIH0sCiAgICB7CiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCBJbnRlcm5hbCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsnaW50ZXJuYWwgKGFnZW50KSd9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnaW50ZXJuYWwnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2VuJwogICAgICAgIEtleXdvcmRzICAgID0+ICJmYXEkUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICB9LAopOwoKIyBDcmVhdGUgc29tZSBmYXEgaXRlbXMgZm9yIHRoZSB0ZXN0LgpteSBARkFRSXRlbUlEczsKCkZBUUlURU06CmZvciBteSAkRkFRSXRlbSAoQEZBUUl0ZW1zKSB7CgogICAgbXkgJEZBUUl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAleyRGQVFJdGVtfSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUl0ZW1JRCwKICAgICAgICAiRkFRQWRkKCkgc3VjY2Vzc2Z1bCBmb3IgdGVzdCAtIEZBUUl0ZW1JRCAkRkFRSXRlbUlEIiwKICAgICk7CgogICAgcHVzaCBARkFRSXRlbUlEcywgJEZBUUl0ZW1JRDsKfQoKIyBEZWZpbmUgc29tZSB0ZXN0IGZvciB0aGUgZnVuY3Rpb24gJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcuCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gJ1Rlc3QgZG9lcyBub3QgY29udGFpbiBhbGwgbmVjZXNzYXJ5IGRhdGEgZm9yIEZBUUtleXdvcmRBcnRpY2xlTGlzdCcsCiAgICAgICAgRmFpbHMgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgRkFRS2V5d29yZEFydGljbGVMaXN0ID0+IHt9LAogICAgICAgIFJlZmVyZW5jZURhdGEgICAgICAgICA9PiB7fSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgID0+ICdUZXN0IHdpdGggYSBjdXN0b21lciB1c2VyIGZvciBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLAogICAgICAgIEZBUUtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRBZG1pblVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aWNrZXQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIGN1c3RvbWVyIHVzZXIsIGJ1dCBvbmx5IHdpdGggbGFuZ3VhZ2UgJ2VuJyBmb3IgRkFRS2V5d29yZEFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgICAgIExhbmd1YWdlcyAgICA9PiBbJ2VuJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpdHNtJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJrZXl3b3JkJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aWNrZXQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIGN1c3RvbWVyIHVzZXIsIGJ1dCBvbmx5IHdpdGggbGFuZ3VhZ2UgJ2RlJyBmb3IgRkFRS2V5d29yZEFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgICAgIExhbmd1YWdlcyAgICA9PiBbJ2RlJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaXRzbSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICA9PiAiVGVzdCB3aXRoIGEgY3VzdG9tZXIgdXNlciB3aXRoIGxhbmd1YWdlICdlbicgYW5kICdkZScgZm9yIEZBUUtleXdvcmRBcnRpY2xlTGlzdCIsCiAgICAgICAgRkFRS2V5d29yZEFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgICAgICBMYW5ndWFnZXMgICAgPT4gWyAnZW4nLCAnZGUnIF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aWNrZXQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIHRlc3QgdXNlciwgYnV0IG9ubHkgd2l0aCBsYW5ndWFnZSAnZW4nIGZvciBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QiLAogICAgICAgIEZBUUtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlcyA9PiBbJ2VuJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzZdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbnRlcm5hbCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAidGlja2V0JFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIHRlc3QgdXNlciwgYnV0IG9ubHkgd2l0aCBsYW5ndWFnZSAnZGUnIGZvciBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QiLAogICAgICAgIEZBUUtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlcyA9PiBbJ2RlJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiZmFxJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpdHNtJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNV0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImtleXdvcmQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW50ZXJuYWwkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICA9PiAiVGVzdCB3aXRoIGEgdGVzdCB1c2VyIHdpdGggbGFuZ3VhZ2UgJ2VuJyBhbmQgJ2RlJyBmb3IgRkFRS2V5d29yZEFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBMYW5ndWFnZXMgPT4gWyAnZW4nLCAnZGUnIF0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzZdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaXRzbSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInB1YmxpYyRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW50ZXJuYWwkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAidGlja2V0JFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNV0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAopOwoKIyBkZWZpbmUgdGVzdCBjb3VudGVyCm15ICRUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNoZWNrIEZBUUtleXdvcmRBcnRpY2xlTGlzdCBhdHRyaWJ1dGUKICAgIGlmICggISRUZXN0LT57RkFRS2V5d29yZEFydGljbGVMaXN0fSB8fCByZWYgJFRlc3QtPntGQVFLZXl3b3JkQXJ0aWNsZUxpc3R9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IE5vIEZBUUtleXdvcmRBcnRpY2xlTGlzdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICMgcHJpbnQgdGVzdCBjYXNlIGRlc2NyaXB0aW9uCiAgICBpZiAoICRUZXN0LT57RGVzY3JpcHRpb259ICkgewogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAxLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkVGVzdC0+e0Rlc2NyaXB0aW9ufSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlRkFRS2V5d29yZEFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+RkFRS2V5d29yZEFydGljbGVMaXN0KAogICAgICAgICV7ICRUZXN0LT57RkFRS2V5d29yZEFydGljbGVMaXN0fSB9LAogICAgKTsKCiAgICBpZiAoICRUZXN0LT57RmFpbHN9ICkgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJUZBUUtleXdvcmRBcnRpY2xlTGlzdCA/IDEgOiAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QoKSAtIHNob3VsZCBmYWlsLiIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKCBzb3J0IGtleXMgJXsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9ICkgewoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJEZBUUtleXdvcmRBcnRpY2xlTGlzdHskS2V5d29yZH0gfHwgW10sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57JEtleXdvcmR9LAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogRkFRS2V5d29yZEFydGljbGVMaXN0KCkgLSAkS2V5d29yZCAtIHRlc3QgdGhlIHJlc3VsdCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CmNvbnRpbnVlIHsKICAgICRUZXN0Q291bnQrKzsKfQoKIyBDaGVjayBpZiB0aGUgY2FjaGUgZXhpc3RzIGZvciB0aGUgbGFzdCBmdW5jdGlvbiBjYWxsLgpteSBATGFuZ3VhZ2VJRHM7CgpMQU5HVUFHRU5BTUU6CmZvciBteSAkTGFuZ3VhZ2VOYW1lICggQHsgJFRlc3RzWy0xXS0+e0ZBUUtleXdvcmRBcnRpY2xlTGlzdH0tPntMYW5ndWFnZXN9IH0gKSB7CiAgICBteSAkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgIE5hbWUgPT4gJExhbmd1YWdlTmFtZSwKICAgICk7CiAgICBuZXh0IExBTkdVQUdFTkFNRSBpZiAhJExhbmd1YWdlSUQ7CgogICAgcHVzaCBATGFuZ3VhZ2VJRHMsICRMYW5ndWFnZUlEOwp9CgpteSAkQ2F0ZWdvcnlJRHMgPSAkRkFRT2JqZWN0LT5BZ2VudENhdGVnb3J5U2VhcmNoKAogICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgVXNlcklEICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKKTsKCm15ICRDYWNoZUtleSA9ICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnOwoKaWYgKEBMYW5ndWFnZUlEcykgewogICAgJENhY2hlS2V5IC49ICc6Okxhbmd1YWdlJyAuIGpvaW4gJzo6Jywgc29ydCBATGFuZ3VhZ2VJRHM7Cn0KJENhY2hlS2V5IC49ICc6OkNhdGVnb3J5SURzJyAuIGpvaW4gJzo6Jywgc29ydCBAeyRDYXRlZ29yeUlEc307CiRDYWNoZUtleSAuPSAnOjpJbnRlcmZhY2U6OmludGVybmFsJzsKCm15ICRMYXN0RkFRS2V5d29yZEFydGljbGVMaXN0Q2FjaGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgIEtleSAgPT4gJENhY2hlS2V5LAopOwoKJFNlbGYtPlRydWUoCiAgICAxLAogICAgIlRlc3QgJFRlc3RDb3VudDogVGVzdCB0aGUgY2FjaGUgZm9yIGxhc3QgZnVuY3Rpb24gY2FsbCIsCik7Cgpmb3IgbXkgJEtleXdvcmQgKCBzb3J0IGtleXMgJXsgJFRlc3RzWy0xXS0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRMYXN0RkFRS2V5d29yZEFydGljbGVMaXN0Q2FjaGUtPnskS2V5d29yZH0gfHwgW10sCiAgICAgICAgJFRlc3RzWy0xXS0+e1JlZmVyZW5jZURhdGF9LT57JEtleXdvcmR9LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENhY2hlIC0gRkFRS2V5d29yZEFydGljbGVMaXN0KCkgLSAkS2V5d29yZCAtIHRlc3QgdGhlIHJlc3VsdCIsCiAgICApOwp9CgojIERlZmluZSBzb21lIHRlc3QgZm9yIHRoZSBmdW5jdGlvbiAnUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLgpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gJ1Rlc3QgZG9lcyBub3QgY29udGFpbiBhbGwgbmVjZXNzYXJ5IGRhdGEgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBGYWlscyAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAnJywKICAgICAgICAgICAgQm9keSAgICA9PiAnJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4ge30sCiAgICB9LAoKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICA9PiAnVGVzdCB3aXRoIGEga2V5d29yZCBpbiB0aGUgc3ViamVjdCBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICIkUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgVXNlcklEICA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgIyAgIC0gRkFRQXJ0aWNsZSA0ID0+IDEKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gJ1Rlc3Qgd2l0aCBzb21lIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5IGZvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIml0c20kUmFuZG9tTnVtYmVyLCB0aWNrZXQkUmFuZG9tTnVtYmVyIGtleXdvcmQkUmFuZG9tTnVtYmVyIElUU00kUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgIyAgIC0gRkFRQXJ0aWNsZSA0ID0+IDEKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAgICAgJ1Rlc3Qgd2l0aCBzb21lIGh0bWwga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgKHdpdGggaHRtbCBhbmQgbGluaykgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIml0c20kUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSA9PgogICAgICAgICAgICAgICAgIiRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgdGlja2V0JFJhbmRvbU51bWJlciA8YnIgLz5rZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4gWzFdIGh0dHBzOi8vZmFxLmNvbS8iLAogICAgICAgICAgICBVc2VySUQgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMiA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gIlRlc3Qgb25seSBmb3IgdGhlIGxhbmd1YWdlICdkZScgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0IiwKICAgICAgICBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgICA9PiAiRkFRJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBCb2R5ICAgICAgPT4gIiRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBMYW5ndWFnZXMgPT4gWydkZSddLAogICAgICAgICAgICBVc2VySUQgICAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgewogICAgICAgIERlc2NyaXB0aW9uID0+ICdUZXN0IHdpdGggc29tZSBrZXl3b3JkcyBpbiB0aGUgc3ViamVjdCBhbmQgYm9keSBhbmQgYSBsaW1pdCBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICJpdHNtJFJhbmRvbU51bWJlcjsgdGlja2V0JFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBMaW1pdCAgID0+IDIsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIFJhbmRvbU51bW5lci5SYW5kb21OdW1lciAoMikKICAgICMgICAtIGZhcSAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyIGFuZCBvcmRlcmluZyBieSBjaGFuZ2UgdGltZSBhbmQgY3JlYXRlIHRpbWUpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAxID0+IDIKICAgICMgICAtIEZBUUFydGljbGUgNCA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ1Rlc3Qgd2l0aCBzb21lIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5IGFuZCBhIGxpbWl0IGZvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICIkUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSAgICA9PiAiJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIGZhcSRSYW5kb21OdW1iZXIgJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIExpbWl0ICAgPT4gMiwKICAgICAgICAgICAgVXNlcklEICA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgID0+ICdUZXN0IHdpdGggYSBrZXl3b3JkIGluIHRoZSBzdWJqZWN0IGZvciBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCAoZm9yIGFnZW50KScsCiAgICAgICAgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIiRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGl0c20gKDMpCiAgICAjICAgLSB0aWNrZXQgKDEpCiAgICAjICAgLSBrZXl3b3JkICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gNQogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDQKICAgICMgICAtIEZBUUFydGljbGUgNCA9PiAxCiAgICAjICAgLSBGQVFBcnRpY2xlIDMgPT4gMQogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgID0+ICdUZXN0IHdpdGggc29tZSBrZXl3b3JkcyBpbiB0aGUgc3ViamVjdCBhbmQgYm9keSBmb3IgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICJpdHNtJFJhbmRvbU51bWJlciwgdGlja2V0JFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgIyAgIC0gRkFRQXJ0aWNsZSA0ID0+IDEKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAgICAgJ1Rlc3Qgd2l0aCBzb21lIGh0bWwga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgKHdpdGggaHRtbCBhbmQgbGluaykgZm9yIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIml0c20kUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSA9PgogICAgICAgICAgICAgICAgIiRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgdGlja2V0JFJhbmRvbU51bWJlciA8YnIgLz5rZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4gWzFdIGh0dHBzOi8vZmFxLmNvbS8iLAogICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNV0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEUuZy4KICAgICMgR2l2ZW4gS2V5d29yZCBmcm9tIHRleHQgKHdpdGggY291bnRlcik6CiAgICAjICAgLSBpdHNtICgzKQogICAgIyAgIC0gdGlja2V0ICgxKQogICAgIyAgIC0ga2V5d29yZCAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyIGFuZCBvcmRlcmluZyBieSBjaGFuZ2UgdGltZSBhbmQgY3JlYXRlIHRpbWUpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDEKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICA9PiAiVGVzdCBvbmx5IGZvciB0aGUgbGFuZ3VhZ2UgJ2RlJyBmb3IgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QiLAogICAgICAgIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCAgID0+ICJGQVEkUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIEJvZHkgICAgICA9PiAiJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIExhbmd1YWdlcyA9PiBbJ2RlJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEUuZy4KICAgICMgR2l2ZW4gS2V5d29yZCBmcm9tIHRleHQgKHdpdGggY291bnRlcik6CiAgICAjICAgLSBpdHNtICgzKQogICAgIyAgIC0gdGlja2V0ICgxKQogICAgIyAgIC0ga2V5d29yZCAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyIGFuZCBvcmRlcmluZyBieSBjaGFuZ2UgdGltZSBhbmQgY3JlYXRlIHRpbWUpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAxID0+IDUKICAgICMgICAtIEZBUUFydGljbGUgMiA9PiA0CiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ1Rlc3Qgd2l0aCBzb21lIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5IGFuZCBhIGxpbWl0IGZvciBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIml0c20kUmFuZG9tTnVtYmVyOyB0aWNrZXQkUmFuZG9tTnVtYmVyIGtleXdvcmQkUmFuZG9tTnVtYmVyIElUU00kUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIExpbWl0ICAgPT4gMiwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gUmFuZG9tTnVtbmVyLlJhbmRvbU51bWVyICgyKQogICAgIyAgIC0gZmFxICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gMgogICAgIyAgIC0gRkFRQXJ0aWNsZSA3ID0+IDEKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnVGVzdCB3aXRoIHNvbWUga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgYW5kIGEgbGltaXQgZm9yIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIiRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICIkUmFuZG9tTnVtYmVyLiRSYW5kb21OdW1iZXIgZmFxJFJhbmRvbU51bWJlciAkUmFuZG9tTnVtYmVyLiRSYW5kb21OdW1iZXIuIiwKICAgICAgICAgICAgTGltaXQgICA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1s2XSwKICAgICAgICBdLAogICAgfSwKKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjaGVjayBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCBhdHRyaWJ1dGUKICAgIGlmICgKICAgICAgICAoICEkVGVzdC0+e1JlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0fSB8fCByZWYgJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gbmUgJ0hBU0gnICkKICAgICAgICAmJiAoICEkVGVzdC0+e1JlbGF0ZWRBZ2VudEFydGljbGVMaXN0fSB8fCByZWYgJFRlc3QtPntSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdH0gbmUgJ0hBU0gnICkKICAgICAgICApCiAgICB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBObyBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCBvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgIG15ICRSZWxhdGVkQXJ0aWNsZUZ1bmN0aW9uOwoKICAgIGlmICggJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gKSB7CiAgICAgICAgJFJlbGF0ZWRBcnRpY2xlRnVuY3Rpb24gPSAnUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJlbGF0ZWRBcnRpY2xlRnVuY3Rpb24gPSAnUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QnOwogICAgfQoKICAgICMgcHJpbnQgdGVzdCBjYXNlIGRlc2NyaXB0aW9uCiAgICBpZiAoICRUZXN0LT57RGVzY3JpcHRpb259ICkgewogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAxLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkVGVzdC0+e0Rlc2NyaXB0aW9ufSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAUmVsYXRlZEFydGljbGVMaXN0OwoKICAgIGlmICggJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gKSB7CgogICAgICAgIEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAkRkFRT2JqZWN0LT4kUmVsYXRlZEFydGljbGVGdW5jdGlvbigKICAgICAgICAgICAgJXsgJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFJlbGF0ZWRBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPiRSZWxhdGVkQXJ0aWNsZUZ1bmN0aW9uKAogICAgICAgICAgICAleyAkVGVzdC0+e1JlbGF0ZWRBZ2VudEFydGljbGVMaXN0fSB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkVGVzdC0+e0ZhaWxzfSApIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIEBSZWxhdGVkQXJ0aWNsZUxpc3QgPyAxIDogMCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogJFJlbGF0ZWRBcnRpY2xlRnVuY3Rpb24oKSAtIHNob3VsZCBmYWlsLiIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSBAUmVsYXRlZEZBUUFydGljbGVJRHMgPSBtYXAgeyAkXy0+e0l0ZW1JRH0gfSBAUmVsYXRlZEFydGljbGVMaXN0OwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgIFxAUmVsYXRlZEZBUUFydGljbGVJRHMsCiAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0sCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6ICRSZWxhdGVkQXJ0aWNsZUZ1bmN0aW9uKCkgLSB0ZXN0IHRoZSByZXN1bHQiLAogICAgICAgICk7CiAgICB9Cn0KY29udGludWUgewogICAgJFRlc3RDb3VudCsrOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSByZXN0b3JlIGRhdGFiYXNlCgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkUmFuZG9tSUQgICA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwpteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCik7CgpteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKbXkgJENhdGVnb3J5SUQxID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAiQ2F0ZWdvcnkxJFJhbmRvbUlEIiwKICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgUGFyZW50SUQgPT4gMCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwokU2VsZi0+SXNOb3QoCiAgICAkQ2F0ZWdvcnlJRDEgLy8gMCwKICAgICcwJywKICAgICJDYXRlZ29yeUFkZCBmb3IgQ2F0ZWdvcnkgMSIsCik7Cm15ICRDYXRlZ29yeUlEMiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gIkNhdGVnb3J5MiRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPklzTm90KAogICAgJENhdGVnb3J5SUQyIC8vIDAsCiAgICAnMCcsCiAgICAiQ2F0ZWdvcnlBZGQgZm9yIENhdGVnb3J5IDIiLAopOwpteSAkQ2F0ZWdvcnlJRDMgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICJDYXRlZ29yeTMkUmFuZG9tSUQiLAogICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CiRTZWxmLT5Jc05vdCgKICAgICRDYXRlZ29yeUlEMyAvLyAwLAogICAgJzAnLAogICAgIkNhdGVnb3J5QWRkIGZvciBDYXRlZ29yeSAzIiwKKTsKCm15ICRDYXRlZ29yeUlEMTEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICJDYXRlZ29yeTEtMSRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEMSwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwokU2VsZi0+SXNOb3QoCiAgICAkQ2F0ZWdvcnlJRDExIC8vIDAsCiAgICAnMCcsCiAgICAiQ2F0ZWdvcnlBZGQgZm9yIENhdGVnb3J5IDEtMSIsCik7Cm15ICRDYXRlZ29yeUlEMTIgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICJDYXRlZ29yeTEtMiRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEMSwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwokU2VsZi0+SXNOb3QoCiAgICAkQ2F0ZWdvcnlJRDEyIC8vIDAsCiAgICAnMCcsCiAgICAiQ2F0ZWdvcnlBZGQgZm9yIENhdGVnb3J5IDEtMiIsCik7Cm15ICRDYXRlZ29yeUlEMTIxID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAiQ2F0ZWdvcnkxLTItMSRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEMTIsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPklzTm90KAogICAgJENhdGVnb3J5SUQxMjEgLy8gMCwKICAgICcwJywKICAgICJDYXRlZ29yeUFkZCBmb3IgQ2F0ZWdvcnkgMS0yLTEiLAopOwoKbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCA9PiAndXNlcnMnLAopOwoKZm9yIG15ICRDYXRlZ29yeUlEICggJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxICkgewoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzLAogICAgICAgICJDYXRlZ29yeUlEICRDYXRlZ29yeUlEIGFkZGVkIHRvIEdyb3VwSUQgJEdyb3VwSUQiLAogICAgKTsKfQoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBVc2VySUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFBhcmVudCA9PiAwLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFBhcmVudCBXL1N1YnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzICAgID0+IFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxIF0sCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+IFskQ2F0ZWdvcnlJRDNdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIDAgVy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCAgICAgICAgID0+IDAsCiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzICAgID0+IFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxIF0sCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+IFskQ2F0ZWdvcnlJRDNdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIENhdGVnb3J5IDEgVy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCAgICAgICAgID0+ICRDYXRlZ29yeUlEMSwKICAgICAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgICAgPT4gWyAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCAkQ2F0ZWdvcnlJRDEyMSBdLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PiBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCAkQ2F0ZWdvcnlJRDMgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdQYXJlbnRJRCBDYXRlZ29yeSAyIFcvU3VicycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgUGFyZW50SUQgICAgICAgICA9PiAkQ2F0ZWdvcnlJRDIsCiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PgogICAgICAgICAgICBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCAkQ2F0ZWdvcnlJRDMsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUGFyZW50SUQgQ2F0ZWdvcnkgMS0xIFcvU3VicycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgUGFyZW50SUQgICAgICAgICA9PiAkQ2F0ZWdvcnlJRDExLAogICAgICAgICAgICBHZXRTdWJDYXRlZ29yaWVzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBOb3RFeHBlY3RlZFJlc3VsdHMgPT4KICAgICAgICAgICAgWyAkQ2F0ZWdvcnlJRDEsICRDYXRlZ29yeUlEMiwgJENhdGVnb3J5SUQzLCAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCAkQ2F0ZWdvcnlJRDEyMSBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIENhdGVnb3J5IDEtMiBXL1N1YnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFBhcmVudElEICAgICAgICAgPT4gJENhdGVnb3J5SUQxMiwKICAgICAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgICAgPT4gWyRDYXRlZ29yeUlEMTIxXSwKICAgICAgICBOb3RFeHBlY3RlZFJlc3VsdHMgPT4gWyAkQ2F0ZWdvcnlJRDEsICRDYXRlZ29yeUlEMiwgJENhdGVnb3J5SUQzLCAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFBhcmVudCBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyAgICA9PiBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCBdLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PiBbICRDYXRlZ29yeUlEMywgJENhdGVnb3J5SUQxMSwgJENhdGVnb3J5SUQxMiwgJENhdGVnb3J5SUQxMjEgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdQYXJlbnRJRCAwIFdPL1N1YnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUGFyZW50SUQgQ2F0ZWdvcnkgMSBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgICAgPT4gWyAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCBdLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PiBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCAkQ2F0ZWdvcnlJRDMsICRDYXRlZ29yeUlEMTIxIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUGFyZW50SUQgQ2F0ZWdvcnkgMiBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRDIsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+CiAgICAgICAgICAgIFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMywgJENhdGVnb3J5SUQxMSwgJENhdGVnb3J5SUQxMiwgJENhdGVnb3J5SUQxMjEgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdQYXJlbnRJRCBDYXRlZ29yeSAxLTEgV08vU3VicycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQxMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBOb3RFeHBlY3RlZFJlc3VsdHMgPT4KICAgICAgICAgICAgWyAkQ2F0ZWdvcnlJRDEsICRDYXRlZ29yeUlEMiwgJENhdGVnb3J5SUQzLCAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCAkQ2F0ZWdvcnlJRDEyMSBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIENhdGVnb3J5IDEtMiBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRDEyLAogICAgICAgICAgICBVc2VySUQgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzICAgID0+IFskQ2F0ZWdvcnlJRDEyMV0sCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+IFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMywgJENhdGVnb3J5SUQxMSwgJENhdGVnb3J5SUQxMiBdLAogICAgfSwKCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICRDYXRlZ29yeUlEcyA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRDYXRlZ29yeUlEcywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gQWdlbnRDYXRlZ29yeVNlYXJjaCgpIC0gV2l0aCBmYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICRFeHBlY3RlZFJlc3VsdCAoIEB7ICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSB9ICkgewogICAgICAgIG15ICRDb3VudCA9IGdyZXAgeyAkXyBlcSAkRXhwZWN0ZWRSZXN1bHQgfSBAeyRDYXRlZ29yeUlEc307CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IEFnZW50Q2F0ZWdvcnlTZWFyY2goKSBDYXRlZ29yeUlEICRFeHBlY3RlZFJlc3VsdCBmb3VuZCAxIHRpbWUiLAogICAgICAgICk7CiAgICB9CiAgICBmb3IgbXkgJE5vdEV4cGVjdGVkUmVzdWx0ICggQHsgJFRlc3QtPntOb3RFeHBlY3RlZFJlc3VsdHN9IH0gKSB7CiAgICAgICAgbXkgJENvdW50ID0gZ3JlcCB7ICRfIGVxICROb3RFeHBlY3RlZFJlc3VsdCB9IEB7JENhdGVnb3J5SURzfTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRDb3VudCAvLyAwLAogICAgICAgICAgICAwLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBBZ2VudENhdGVnb3J5U2VhcmNoKCkgQ2F0ZWdvcnlJRCAkTm90RXhwZWN0ZWRSZXN1bHQgZm91bmQgMCB0aW1lcyIsCiAgICAgICAgKTsKICAgIH0KCn0KMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgojIGdldCBuZWVkZWQgb2JqZWN0cwokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKbXkgQFRlc3RzICAgID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTm8gTmFtZScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NvbWUgQ29tbWVudCcsCiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTm8gUGFyZW50SUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gIlRlc3RDYXRlZ29yeSRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1NvbWUgQ29tbWVudCcsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFZhbGlkSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkkUmFuZG9tSUQiLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBDb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdObyBVc2VySUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkkUmFuZG9tSUQiLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBDb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDb3JyZWN0IE5vIENvbW1lbnQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkxJFJhbmRvbUlEIiwKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDb3JyZWN0IEFTQ0lJJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVGVzdENhdGVnb3J5MiRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NvcnJlY3QgVW5pY29kZScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlRlc3RDYXRlZ29yeTPDpMO8w5/DhMOWw5zigqzQuNGBw6HDqcOtw7rDusOBw4nDjcOaw7HDkSRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQgw6TDvMOfw4TDlsOc4oKs0LjRgcOhw6nDrcO6w7rDgcOJw43DmsOxw5EnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKKTsKCm15ICVBZGRlZENhdGVnb3J5SURzOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkQ2F0ZWdvcnlJRCAvLyAwLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBDYXRlZ29yeUFERCgpIC0gV2l0aCBGYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gQ2F0ZWdvcnlBZGQoKSAtIFdpdGggVHJ1ZSIsCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAkQWRkZWRDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0sCiAgICAgICAgMSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBDYXRlZ29yeUFkZCgpIENhdGVnb3J5SUQgd2FzIG5vdCB1c2VkIHJldHVybmVkIGJlZm9yZSIsCiAgICApOwoKICAgICRBZGRlZENhdGVnb3J5SURzeyRDYXRlZ29yeUlEfSA9IDE7Cn0KCiMgVGVzdCBmb3IgYnVnIzExODg5IC0gQ2F0ZWdvcnlBZGQgcmV0dXJucyB3cm9uZyBDYXRlZ29yeUlEIGlmIHN1YmNhdGVnb3J5IG5hbWUgYWxyZWFkeSBleGlzdHMuCiMgVGhlIGlkZWEgaXMgdG8gY3JlYXRlIHNldmVyYWwgcGFyZW50cyBhbmQgZm9yIGVhY2ggY3JlYXRlIGEgY2hpbGQgY2F0ZWdvcnksIGFsbCBjaGlsZHJlbiBoYXMgdGhlCiMgICBzYW1lIG5hbWUuCmZvciBteSAkUGFyZW50Q291bnQgKCAxIC4uIDEwICkgewoKICAgIG15ICRQYXJlbnRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgTmFtZSAgICAgPT4gIlRlc3RQYXJlbnQkUGFyZW50Q291bnQkUmFuZG9tSUQiLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkUGFyZW50Q2F0ZWdvcnlJRCwKICAgICAgICAiUGFyZW50ICRQYXJlbnRDb3VudCBDYXRlZ29yeUFkZCgpIC0gV2l0aCBUcnVlIiwKICAgICk7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRBZGRlZENhdGVnb3J5SURzeyRQYXJlbnRDYXRlZ29yeUlEfSwKICAgICAgICAxLAogICAgICAgICJQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgQ2F0ZWdvcnlJRCB3YXMgbm90IHVzZWQgcmV0dXJuZWQgYmVmb3JlIiwKICAgICk7CgogICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JFBhcmVudENhdGVnb3J5SUR9ID0gMTsKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2hpbGQkUmFuZG9tSUQiLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+ICRQYXJlbnRDYXRlZ29yeUlELAogICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIkNoaWxkIGZvciBQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgLSBXaXRoIFRydWUiLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9LAogICAgICAgIDEsCiAgICAgICAgIkNoaWxkIGZvciBQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgQ2F0ZWdvcnlJRCB3YXMgbm90IHVzZWQgcmV0dXJuZWQgYmVmb3JlIiwKICAgICk7CgogICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKfQoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KCk7CnVzZSB2YXJzIHF3KCRTZWxmKTsKdXNlIHZhcjo6cGFja2FnZXNldHVwOjpGQVE7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7Cm15ICRGQVFPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkUmFuZG9tR3JvdXAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUmVzdG9yZSBwZXJtaXNzaW9ucyBvZiBBZ2VudEZBUUxhbmd1YWdlIGZyb250ZW5kIG1vZHVsZScsCiAgICAgICAgU2V0dGluZ3MgID0+IFsnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRTGFuZ3VhZ2UnXSwKICAgICAgICBPbGRDb25maWcgPT4gewogICAgICAgICAgICAnRnJvbnRlbmQ6Ok1vZHVsZScgPT4gewogICAgICAgICAgICAgICAgJ0FnZW50RkFRTGFuZ3VhZ2UnID0+IHsKICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24nID0+ICdGQVEgQXJlYS4nLAogICAgICAgICAgICAgICAgICAgICdHcm91cCcgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkUmFuZG9tR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnTmF2QmFyJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY2Nlc3NLZXknICAgPT4gJ0wnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jsb2NrJyAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbicgPT4gJ0xhbmd1YWdlIE1hbmFnZW1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dyb3VwJyAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJhbmRvbUdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5rJyAgID0+ICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTmFtZScgICA9PiAnTGFuZ3VhZ2UgTWFuYWdlbWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTmF2QmFyJyA9PiAnRkFRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcmlvJyAgID0+ICc5NDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUnICAgPT4gJycKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1Jlc3RvcmUgcGVybWlzc2lvbnMgb2YgQWdlbnRGQVFBZGQgZnJvbnRlbmQgbW9kdWxlJywKICAgICAgICBTZXR0aW5ncyAgPT4gWydGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFBZGQnXSwKICAgICAgICBPbGRDb25maWcgPT4gewogICAgICAgICAgICAnRnJvbnRlbmQ6Ok1vZHVsZScgPT4gewogICAgICAgICAgICAgICAgJ0FnZW50RkFRQWRkJyA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uJyA9PiAnRkFRIEFyZWEuJywKICAgICAgICAgICAgICAgICAgICAnR3JvdXAnICAgICAgID0+IFtdLAogICAgICAgICAgICAgICAgICAgICdOYXZCYXInICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXNzS2V5JyAgID0+ICdBJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCbG9jaycgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24nID0+ICdOZXcgRkFRIEFydGljbGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dyb3VwJyAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhcScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmsnICAgPT4gJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOZXcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05hdkJhcicgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJpbycgICA9PiAnOTIwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUeXBlJyAgID0+ICcnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdSZXN0b3JlIHZhbHVlIG9mIEZBUTo6QXBwcm92YWxHcm91cCcsCiAgICAgICAgU2V0dGluZ3MgID0+IFsnRkFROjpBcHByb3ZhbEdyb3VwJ10sCiAgICAgICAgT2xkQ29uZmlnID0+IHsKICAgICAgICAgICAgJ0ZBUTo6QXBwcm92YWxHcm91cCcgPT4gJFJhbmRvbUdyb3VwLAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICA9PiAnUmVzdG9yZSBwZXJtaXNzaW9ucyBvZiBGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFeHBsb3JlciB0byB0aGUgb2xkIGRlZmF1bHRzJywKICAgICAgICBTZXR0aW5ncyAgICA9PiBbJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUV4cGxvcmVyJ10sCiAgICAgICAgT2xkQ29uZmlnICAgPT4ge30sCiAgICAgICAgT2xkRGVmYXVsdHMgPT4gewogICAgICAgICAgICAnRnJvbnRlbmQ6Ok1vZHVsZScgPT4gewogICAgICAgICAgICAgICAgJ0FnZW50RkFRRXhwbG9yZXInID0+IHsKICAgICAgICAgICAgICAgICAgICBHcm91cCAgID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgICAgIE5hdkJhciAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdGQVEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jsb2NrJyA9PiAnSXRlbUFyZWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V4cGxvcmVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCbG9jaycgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OC1GQVEtTGFzdENoYW5nZScgPT4geyBHcm91cCA9PiAkUmFuZG9tR3JvdXAgfSwKICAgICAgICB9LAogICAgfSwKKTsKCm15ICRHZXRDb25maWcgPSBzdWIgewogICAgbXkgJFNvdXJjZSAgICAgID0gc2hpZnQ7CiAgICBteSAkU2V0dGluZ05hbWUgPSBzaGlmdDsKCiAgICBteSAkQ29uZmlnID0gJFNvdXJjZTsKICAgIG15IEBLZXlzICAgPSBzcGxpdCAnIyMjJywgJFNldHRpbmdOYW1lOwogICAgd2hpbGUgKCBteSAkS2V5ID0gc2hpZnQgQEtleXMgKSB7CiAgICAgICAgJENvbmZpZyA9ICRDb25maWctPnskS2V5fTsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZzsKfTsKCm15ICRDaGVja0dyb3VwR3JvdXBSbyA9IHN1YiB7CiAgICBteSAlUGFyYW0gICAgPSBAXzsKICAgIG15ICRFeHBlY3RlZCA9ICRQYXJhbXtFeHBlY3RlZH07CiAgICBteSAkUmVzdWx0ICAgPSAkUGFyYW17UmVzdWx0fTsKICAgIG15ICRUZXN0TmFtZSA9ICRQYXJhbXtUZXN0TmFtZX07CgogICAgaWYgKCAkRXhwZWN0ZWQtPntHcm91cH0gfHwgJEV4cGVjdGVkLT57R3JvdXBSb30gKSB7CgogICAgICAgICMgQ2hlY2sgZm9yIEtleSBHcm91cCBhbmQgR3JvdXBSby4KICAgICAgICBmb3IgbXkgJEtleSAocXcoR3JvdXAgR3JvdXBSbykpIHsKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFJlc3VsdC0+eyRLZXl9LAogICAgICAgICAgICAgICAgJEV4cGVjdGVkLT57JEtleX0gLy8gW10sCiAgICAgICAgICAgICAgICAkVGVzdE5hbWUgLiAiLCAnJHsgS2V5IH0nIGZpeGVkISIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn07CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgSWYgdGhlIGtleSAnQ29uZmlnJyBleGlzdHMsIGxldHMgc2V0IHRoZSBuZXcgY29uZmlnIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlLgogICAgaWYgKCAkVGVzdC0+e0NvbmZpZ30gKSB7CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFRlc3QtPntDb25maWd9IH0gKSB7CiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntDb25maWd9LT57JEtleX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgaWYgaXQgd2FzIHJlc3RvcmVkIHRvIHRoZSBvbGQgY29uZmlnLgogICAgbXkgJE9sZENvbmZpZyA9ICRUZXN0LT57T2xkQ29uZmlnfTsKICAgIGxvY2FsICp2YXI6OnBhY2thZ2VzZXR1cDo6RkFROjpfR2V0T1RPQk81Q29uZmlnQmFja3VwID0gc3ViIHsgICAgIyMgbm8gY3JpdGljCiAgICAgICAgcmV0dXJuICRPbGRDb25maWc7CiAgICB9OwoKICAgIHZhcjo6cGFja2FnZXNldHVwOjpGQVEtPm5ldygpLT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNV8wXzkyKCk7CgogICAgIyBDaGVjayBpZiB0aGUgbmV3IGNvbmZpZyBpcyBhY2NvcmRpbmcgdG8gdGhlIG9sZCBvbmUuCiAgICBteSBAU2V0dGluZ3MgPSBAeyAkVGVzdC0+e1NldHRpbmdzfSB9OwogICAgU0VUVElOR19OQU1FOgogICAgZm9yIG15ICRTZXR0aW5nTmFtZSAoQFNldHRpbmdzKSB7CiAgICAgICAgbXkgJFNldHRpbmdPbGRDb25maWcgICA9ICRHZXRDb25maWctPiggJE9sZENvbmZpZywgICAgICAgICAgICRTZXR0aW5nTmFtZSApOwogICAgICAgIG15ICRTZXR0aW5nT2xkRGVmYXVsdHMgPSAkR2V0Q29uZmlnLT4oICRUZXN0LT57T2xkRGVmYXVsdHN9LCAkU2V0dGluZ05hbWUgKTsKICAgICAgICBteSAlQ29uZmlnICAgICAgICAgICAgID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgKTsKICAgICAgICBteSAkRWZmZWN0aXZlVmFsdWUgPSAkQ29uZmlne0VmZmVjdGl2ZVZhbHVlfTsKCiAgICAgICAgIyBJdCdzIG5vdCBhIGNvbXBsZXggdmFsdWUsIGNoZWNrIG9ubHkgaWYgdGhlIHZhbHVlIHdhcyByZXN0b3JlZC4KICAgICAgICBpZiAoICEoIHJlZiAkRWZmZWN0aXZlVmFsdWUgKSApIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJEVmZmVjdGl2ZVZhbHVlLAogICAgICAgICAgICAgICAgJFNldHRpbmdPbGRDb25maWcgLy8gJFNldHRpbmdPbGREZWZhdWx0cywKICAgICAgICAgICAgICAgICRUZXN0LT57TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkdfTkFNRTsKICAgICAgICB9CgogICAgICAgICRDaGVja0dyb3VwR3JvdXBSby0+KAogICAgICAgICAgICBFeHBlY3RlZCA9PiAkU2V0dGluZ09sZENvbmZpZyAvLyAkU2V0dGluZ09sZERlZmF1bHRzLAogICAgICAgICAgICBSZXN1bHQgICA9PiAkRWZmZWN0aXZlVmFsdWUsCiAgICAgICAgICAgIFRlc3ROYW1lID0+ICRUZXN0LT57TmFtZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkU2V0dGluZ09sZENvbmZpZy0+e05hdkJhcn0gfHwgJFNldHRpbmdPbGREZWZhdWx0cy0+e05hdkJhcn0gKSB7CgogICAgICAgICAgICAjIENoZWNrIGZvciBuYXZpZ2F0aW9uIHBlcm1pc3Npb25zLgogICAgICAgICAgICBteSAoIHVuZGVmLCAkRnJvbnRlbmQgKSA9IHNwbGl0ICcjIyMnLCAkU2V0dGluZ05hbWU7CgogICAgICAgICAgICAjIEdldCB0aGUgb2xkIG5hdmlnYXRpb24uCiAgICAgICAgICAgIG15ICRPbGROYXZpZ2F0aW9uID0gJFNldHRpbmdPbGRDb25maWctPntOYXZCYXJ9IC8vICRTZXR0aW5nT2xkRGVmYXVsdHMtPntOYXZCYXJ9OwoKICAgICAgICAgICAgIyBHZXQgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi4KICAgICAgICAgICAgbXkgJE5ld05hdmlnYXRpb24KICAgICAgICAgICAgICAgID0gJEdldENvbmZpZy0+KCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLCAnRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyMnIC4gJEZyb250ZW5kICk7CgogICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBwZXJtaXNzaW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBvbGQgb25lLgogICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggc29ydCBrZXlzICV7JE5ld05hdmlnYXRpb259ICkgewogICAgICAgICAgICAgICAgbXkgJE5ld0l0ZW1zID0gJE5ld05hdmlnYXRpb24tPnskSW5kZXh9OwogICAgICAgICAgICAgICAgZm9yIG15ICROZXdJdGVtICggQHskTmV3SXRlbXN9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRPbGRJdGVtCiAgICAgICAgICAgICAgICAgICAgICAgID0gTGlzdDo6VXRpbDo6Zmlyc3QgeyAkXy0+e05hbWV9IGVxICROZXdJdGVtLT57TmFtZX0gJiYgJF8tPntCbG9ja30gZXEgJE5ld0l0ZW0tPntCbG9ja30gfQogICAgICAgICAgICAgICAgICAgIEB7JE9sZE5hdmlnYXRpb259OwogICAgICAgICAgICAgICAgICAgIG5leHQgTkVXX0lURU0gaWYgISRPbGRJdGVtOwoKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tHcm91cEdyb3VwUm8tPigKICAgICAgICAgICAgICAgICAgICAgICAgRXhwZWN0ZWQgPT4gJE9sZEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCAgID0+ICROZXdJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICBUZXN0TmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRlc3QtPntOYW1lfSAuICcgKE5hdmlnYXRpb24gJXMpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3SXRlbS0+e0Jsb2NrfSA/ICctJyAuICROZXdJdGVtLT57QmxvY2t9IDogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKIyBSZXN0b3JlIGRlZmF1bHQgc2V0dGluZyB2YWx1ZXMgYWZ0ZXIgdGVzdGluZywgc2luY2Ugb3ZlcnJpZGVzIGFyZSBkZXBsb3llZCBmcm9tIGV4dGVybmFsIGNvZGUuCm15IEBTZXR0aW5ncyA9ICgKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFeHBsb3JlcicsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUVkaXQnLAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCcsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQ2F0ZWdvcnknLAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVNlYXJjaCcsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoU21hbGwnLAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVpvb20nLAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVJpY2hUZXh0JywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFQcmludCcsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRSm91cm5hbCcsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRSGlzdG9yeScsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRGVsZXRlJywKICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OC1GQVEtTGFzdENoYW5nZScsCiAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAzOTktRkFRLUxhc3RDcmVhdGUnLAogICAgJ0ZBUTo6QXBwcm92YWxHcm91cCcsCiAgICAnRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUV4cGxvcmVyIyMjMDAyLUZBUScsCiAgICAnRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUFkZCMjIzAwMi1GQVEnLAogICAgJ0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFMYW5ndWFnZSMjIzAwMi1GQVEnLAogICAgJ0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFDYXRlZ29yeSMjIzAwMi1GQVEnLAogICAgJ0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFTZWFyY2gjIyMwMDItRkFRJywKICAgICdGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRSm91cm5hbCMjIzAwMi1GQVEnLAopOwoKZm9yIG15ICRTZXR0aW5nTmFtZSAoQFNldHRpbmdzKSB7CiAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICBOYW1lICAgPT4gJFNldHRpbmdOYW1lLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAiTG9ja2VkICRTZXR0aW5nTmFtZSIKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nUmVzZXQoCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJFNldHRpbmdOYW1lLAogICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzLAogICAgICAgICJSZXNldCAkU2V0dGluZ05hbWUiLAogICAgKTsKfQoKbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgQ29tbWVudHMgICAgICA9PiAnVXBncmFkZUxvd2VyVGhhbjUwOTIudCcsCiAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICBGb3JjZSAgICAgICAgID0+IDEsCiAgICBEaXJ0eVNldHRpbmdzID0+IFxAU2V0dGluZ3MsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAnUmVzdG9yZWQgZGVmYXVsdCBjb25maWd1cmF0aW9uJwopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgpOwpteSAkVXNlcklEICAgID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luICk7CgokU2VsZi0+VHJ1ZSgKICAgICRVc2VySUQsCiAgICAiVGVzdCB1c2VyICRVc2VySUQgY3JlYXRlZCIsCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgpteSAkR0lEID0gJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgIE5hbWUgICAgPT4gJ0NoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbi0nIC4gJFJhbmRvbUlELAogICAgQ29tbWVudCA9PiAnY29tbWVudCBkZXNjcmliaW5nIHRoZSBncm91cCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJEdJRCwKICAgICJHcm91cEFkZCgpIiwKKTsKCm15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0NoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbi0nIC4gJFJhbmRvbUlELAogICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SUQsCiAgICAiQ2F0ZWdvcnlBZGQoKSIsCik7CgpteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgR3JvdXBJRHMgICA9PiBbJEdJRF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0Q2F0ZWdvcnlHcm91cCgpIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICdNaXNzaW5nIENhdGVnb3J5SUQnLAogICAgICAgIFBlcm1pc3Npb24gPT4ge30sCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICdNaXNzaW5nIFVzZXJJRCcsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7fSwKICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAnTm8gcGVybWlzc2lvbnMnLAogICAgICAgIFBlcm1pc3Npb24gPT4ge30sCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgJycgICA9PiAnJywKICAgICAgICAgICAgJ3JvJyA9PiAnJywKICAgICAgICAgICAgJ3J3JyA9PiAnJywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiJ3JvJyBwZXJtaXNzaW9ucyIsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIHJvID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICcnICAgPT4gJ3JvJywKICAgICAgICAgICAgJ3JvJyA9PiAncm8nLAogICAgICAgICAgICAncncnID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICInbW92ZV9pbnRvJyBwZXJtaXNzaW9ucyIsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIG1vdmVfaW50byA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAnJyAgID0+ICcnLAogICAgICAgICAgICAncm8nID0+ICcnLAogICAgICAgICAgICAncncnID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICIncncnIHBlcm1pc3Npb25zIiwKICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgcncgPT4gMSwKICAgICAgICB9LAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgJycgICA9PiAncm8nLAogICAgICAgICAgICAncm8nID0+ICdybycsCiAgICAgICAgICAgICdydycgPT4gJ3J3JywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgU2V0IG5ldyBwZXJtaXNzaW9ucwogICAgaWYgKCAkVGVzdC0+e1Blcm1pc3Npb259ICkgewogICAgICAgICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwVXNlckFkZCgKICAgICAgICAgICAgR0lEICAgICAgICA9PiAkR0lELAogICAgICAgICAgICBVSUQgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFRlc3QtPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRUeXBlICggJycsICdybycsICdydycgKSB7CgogICAgICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgICAgICAleyAkVGVzdC0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgVHlwZSA9PiAkVHlwZSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkUGVybWlzc2lvblN0cmluZywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKSBmYWlsdXJlIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRFU1Q7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRQZXJtaXNzaW9uU3RyaW5nLAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0fS0+eyRUeXBlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKSBmb3IgdHlwZSAkVHlwZSIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CgogICAgIyBSZW1vdmUgYWxsIHBlcm1pc3Npb25zCiAgICAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cFVzZXJBZGQoCiAgICAgICAgR0lEICAgICAgICA9PiAkR0lELAogICAgICAgIFVJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBQZXJtaXNzaW9uID0+IHt9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIFNvY2tldDsKdXNlIFlBTUw7CnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6TGFuZ3VhZ2VMaXN0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OwoKIyBnZXQgaGVscGVyIG9iamVjdApteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIHNldCB3ZWItc2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgc2V0IFVzZXJJRCBvbiAxCm15ICRVc2VySUQgPSAxOwoKIyBnZXQgaGVscGVyIG9iamVjdApteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKIyBnZXQgcHVibGljIHN0YXRlcwpteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgVXNlcklEID0+ICRVc2VySUQsCik7Cm15ICRQdWJsaWNTdGF0ZUlEOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlU3RhdGVzICkgewogICAgaWYgKCAkU3RhdGVzeyRLZXl9ID1+IC9ecHVibGljLiovICkgewogICAgICAgICRQdWJsaWNTdGF0ZUlEID0gJEtleTsKICAgIH0KfQoKJFNlbGYtPklzTm90KAogICAgJFB1YmxpY1N0YXRlSUQsCiAgICB1bmRlZiwKICAgICJTZWFyY2ggZm9yIHB1YmxpYyBTdGF0ZUlEIiwKKTsKCiMgY2F0ZWdvcnkgb25lCm15ICRDYXRlZ29yeUlET25lID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ29ubmVjdG9yQ2F0ZWdvcnlPbmUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURPbmUsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENhdGVnb3J5IiwKKTsKCiMgY2F0ZWdvcnkgdHdvCm15ICRDYXRlZ29yeUlEVHdvID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ29ubmVjdG9yQ2F0ZWdvcnlUd28nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NoaWxkIENhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlET25lLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlEVHdvLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgojIGNhdGVnb3J5IHRocmVlCm15ICRDYXRlZ29yeUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICchIsKnJCUmLygpPT/DnCrDhMOWTDpMQCwuLScgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURUaHJlZSwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKIyBjYXRlZ29yeSBmb3VyCm15ICRDYXRlZ29yeUlERm91ciA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5Rm91cicgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDb21tZW50ICA9PiAnQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gMCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlJREZvdXIsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRJdGVtSURPbmUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnT25lJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlET25lLAogICAgU3RhdGVJRCAgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIEFwcHJvdmVkICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRJdGVtSURPbmUsCiAgICAiRkFRQWRkKCkgLSBGQVEgT25lIiwKKTsKCm15ICRJdGVtSURUd28gPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnIFR3bycgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRFRocmVlLAogICAgU3RhdGVJRCAgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICBBcHByb3ZlZCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkSXRlbUlEVHdvLAogICAgIkZBUUFkZCgpIC0gRkFRIFR3byIsCik7CgpteSAkSXRlbUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUg5L2/55So5LiL5YiX6K+t6KiAIFRocmVlJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFN0YXRlSUQgICAgID0+ICRQdWJsaWNTdGF0ZUlELAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgRmllbGQxICAgICAgPT4gJ0xvb2sgZm9yIG1lICcgLiAkUmFuZG9tSUQgLiAnIG9uIHRoZSBzZWFyY2gnLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uIG5vdCBmb3VuZDEuLi4nLAogICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgQXBwcm92ZWQgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEl0ZW1JRFRocmVlLAogICAgIkZBUUFkZCgpIC0gRkFRIFRocmVlIiwKKTsKCiMgZ2V0IGNvbW1vbiBvYmplY3RzCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkTWFpbk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiMgZmlsZSBjaGVja3MKZm9yIG15ICRGaWxlIChxdyhiaW4gdHh0KSkgewogICAgbXkgJExvY2F0aW9uID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb21lJykKICAgICAgICAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9HZW5lcmljSW50ZXJmYWNlL0ZBUS9HSS1GQVEtVGVzdC11dGY4LTEuJEZpbGUiOwoKICAgIG15ICRDb250ZW50UmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICRMb2NhdGlvbiwKICAgICAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCiAgICApOwoKICAgIG15ICRBdHRhY2htZW50ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAkSXRlbUlEVGhyZWUsCiAgICAgICAgQ29udGVudCAgICAgPT4gJHskQ29udGVudFJlZn0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3Rlc3QvJyAuICRGaWxlLAogICAgICAgIEZpbGVuYW1lICAgID0+ICd0ZXN0LicgLiAkRmlsZSwKICAgICAgICBJbmxpbmUgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgIyAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudCwKICAgICAgICAiQXR0YWNobWVudEFkZCgpIC0gRmlsZSAiIC4gJEZpbGUsCiAgICApOwp9CgpteSAkSXRlbUlERm91ciA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCAuICcg0K/Qt9GL0LrQvtCy0YvQtSBGb3VyJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFN0YXRlSUQgICAgID0+ICRQdWJsaWNTdGF0ZUlELAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0gRGVzY3JpcHRpb24gMS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBBcHByb3ZlZCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkSXRlbUlERm91ciwKICAgICJGQVFBZGQoKSAtIEZBUSBGb3VyIiwKKTsKCiMgZ2V0IGxhbmd1YWdlcyBsaXN0Cm15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCm15IEBMYW5ndWFnZUxpc3Q7CmZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYW5ndWFnZXMgKSB7CiAgICBteSAlTGFuZ3VhZ2UgPSAoCiAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgIE5hbWUgPT4gJExhbmd1YWdlc3skS2V5fSwKICAgICk7CiAgICBwdXNoIEBMYW5ndWFnZUxpc3QsIHslTGFuZ3VhZ2V9Owp9CgojIGdldCBGQVEKbXkgJUZBUU9uZSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRE9uZSwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRT25lICkgewogICAgaWYgKCAhJEZBUU9uZXskS2V5fSApIHsKICAgICAgICAkRkFRT25leyRLZXl9ID0gJyc7CiAgICB9Cn0KCm15ICVGQVFUd28gPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRJdGVtSURUd28sCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUVR3byApIHsKICAgIGlmICggISRGQVFUd297JEtleX0gKSB7CiAgICAgICAgJEZBUVR3b3skS2V5fSA9ICcnOwogICAgfQp9CgpteSAlRkFRVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRJdGVtSURUaHJlZSwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRVGhyZWUgKSB7CiAgICBpZiAoICEkRkFRVGhyZWV7JEtleX0gKSB7CiAgICAgICAgJEZBUVRocmVleyRLZXl9ID0gJyc7CiAgICB9Cn0KCm15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRFRocmVlLAogICAgU2hvd0lubGluZSA9PiAxLCAgICAgICAgICAgICAgIyAgICggMHwxLCBkZWZhdWx0IDEpCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgpteSBAQXR0YWNobWVudHNUaHJlZTsKZm9yIG15ICRBdHRhY2htZW50IChASW5kZXgpIHsKICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFRocmVlLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgJEZpbGV7Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkRmlsZXtDb250ZW50fSApOwogICAgJEZpbGV7SW5saW5lfSAgPSAkQXR0YWNobWVudC0+e0lubGluZX07CiAgICAkRmlsZXtGaWxlSUR9ICA9ICRBdHRhY2htZW50LT57RmlsZUlEfTsKCiAgICBwdXNoIEBBdHRhY2htZW50c1RocmVlLCB7JUZpbGV9Owp9CgpteSAlRkFRRm91ciA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JREZvdXIsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUUZvdXIgKSB7CiAgICBpZiAoICEkRkFRRm91cnskS2V5fSApIHsKICAgICAgICAkRkFRRm91cnskS2V5fSA9ICcnOwogICAgfQp9CgojIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICBWYWxpZCAgPT4gMSwKICAgIFR5cGUgICA9PiAncncnLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7Cm15IEBQdWJsaWNDYXRlZ29yeUxpc3Q7CmZvciBteSAkS2V5ICggc29ydCgga2V5cyAleyRDYXRlZ29yeVRyZWV9ICkgKSB7CiAgICBteSAlQ2F0ZWdvcnkgPSAoCiAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgIE5hbWUgPT4gJENhdGVnb3J5VHJlZS0+eyRLZXl9LAogICAgKTsKICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5TGlzdCwgeyVDYXRlZ29yeX07Cn0KCiMgY3JlYXRlIHdlYi1zZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3QgPSAkSGVscGVyT2JqZWN0LT5HZXRUZXN0SFRUUEhvc3RuYW1lKCk7CgojIHVzZSBoYXJkIGNvZGVkIGxvY2FsaG9zdCBJUCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYiBzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yICB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMDAwMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlTGlzdCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdGQVE6Okxhbmd1YWdlTGlzdCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0NhdGVnb3J5TGlzdCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0ZBUVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdGQVE6OlB1YmxpY0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0ZBUUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdGQVE6OlB1YmxpY0ZBUUdldCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgTGFuZ3VhZ2VMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQdWJsaWNDYXRlZ29yeUxpc3QgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0ZBUVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdCAxJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCAgICAgICAgICAgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhbmd1YWdlID0+IFxATGFuZ3VhZ2VMaXN0LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0xhbmd1YWdlTGlzdCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCAgICAgICAgICAgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gXEBQdWJsaWNDYXRlZ29yeUxpc3QsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0NhdGVnb3J5TGlzdCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgPT4gJ1RpdGxlIEZBUSAnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBPcmRlckJ5ID0+ICdGQVFJRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgSUQgPT4gWwogICAgICAgICAgICAgICAgICAgICRJdGVtSURGb3VyLAogICAgICAgICAgICAgICAgICAgICRJdGVtSURUd28sCiAgICAgICAgICAgICAgICAgICAgJEl0ZW1JRE9uZSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIFdoYXQgICAgPT4gJ0xvb2sgZm9yIG1lICcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJ0ZBUUlEJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBJRCA9PiAkSXRlbUlEVGhyZWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlERm91ciwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRm91ciwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFGb3VyCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEl0ZW1JREZvdXIsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDYnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIElEID0+ICRJdGVtSURGb3VyLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdQdWJsaWNGQVFHZXQ6IEdvdCBubyBJdGVtSUQhJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEIScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkSXRlbUlERm91ciwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgNycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSXRlbUlEID0+ICdOb3RJdGVtSUQnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFHZXQuTm90VmFsaWRGQVFJRCcsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFHZXQ6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUUdldDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUUdldCcsCiAgICAgICAgSXRlbUlEICAgID0+ICdOb3RJdGVtSUQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA4JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFRocmVlLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIEZBUUl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFUaHJlZSwKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gXEBBdHRhY2htZW50c1RocmVlLAogICAgICAgICAgICAgICAgICAgICAgICAlRkFRVGhyZWUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEl0ZW1JRFRocmVlLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBPcmRlckJ5ID0+ICdOb3RFeGlzdGluZ0ZpZWxkJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaC5Ob3RGQVFEYXRhJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUVNlYXJjaDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgMTAnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIFdoYXQgPT4gJ05vdEV4aXN0aW5nVmFsdWUnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFTZWFyY2guTm90RkFRRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFTZWFyY2g6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVybkxvY2FsRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAxMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSXRlbUlEID0+ICIkSXRlbUlET25lLCRJdGVtSURUd28sJEl0ZW1JRFRocmVlIiwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFPbmUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUVR3bwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRVGhyZWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gXEBBdHRhY2htZW50c1RocmVlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAiJEl0ZW1JRE9uZSwkSXRlbUlEVHdvLCRJdGVtSURUaHJlZSIsCiAgICB9LAoKKTsKCiMgZGVidWdnZXIgb2JqZWN0Cm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkRGVidWdnZXJPYmplY3QsCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcicsCiAgICAnRGVidWdnZXJPYmplY3QgaW5zdGFudGlhdGUgY29ycmVjdGx5JywKKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjcmVhdGUgbG9jYWwgb2JqZWN0CiAgICBteSAkTG9jYWxPYmplY3QgPSAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OiRUZXN0LT57T3BlcmF0aW9ufSIsCiAgICAgICAgcmVmICRMb2NhbE9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSBsb2NhbCBvYmplY3QiLAogICAgKTsKCiAgICAjIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWItc2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gJFRlc3QtPntSZXF1ZXN0RGF0YX0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyB3b3JrYXJvdW5kIGJlY2F1c2UgcmVzdWx0cyBmcm9tIGRpcmVjdCBjYWxsIGFuZAogICAgIyBmcm9tIFNPQVAgY2FsbCBhcmUgYSBsaXR0bGUgYml0IGRpZmZlcmVudAogICAgaWYgKCAkVGVzdC0+e09wZXJhdGlvbn0gZXEgJ1B1YmxpY0ZBUUdldCcgKSB7CgogICAgICAgIGlmICggcmVmICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgZm9yIG15ICRGQVFJdGVtICggQHsgJExvY2FsUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskRkFRSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZBUUl0ZW0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZBUUl0ZW0tPnskS2V5fSA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB9CgogICAgIyByZW1vdmUgRXJyb3JNZXNzYWdlIHBhcmFtZXRlciBmcm9tIGRpcmVjdCBjYWxsCiAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgIGRlbGV0ZSAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9OwogICAgfQoKICAgIGlmICggJFRlc3QtPntFeHBlY3RlZFJldHVybkxvY2FsRGF0YX0gKSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGF9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJldHVyblJlbW90ZURhdGF9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1vdGUgY2FsbCB1c2luZyB0aGUgc3lzdGVtIGFzIFJlcXVlc3RlciBhbmQgUHJvdmlkZXIKCiAgICAjIGNyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0CiAgICBteSAkUmVxdWVzdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKICAgICRTZWxmLT5JcygKICAgICAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgICAgIHJlZiAkUmVxdWVzdGVyT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAogICAgKTsKCiAgICAjIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWItc2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiAkVGVzdC0+e1JlcXVlc3REYXRhfSwKICAgICk7CgogICAgIyBjaGVjayByZXN1bHQKICAgICRTZWxmLT5JcygKICAgICAgICAnSEFTSCcsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICYmICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9ICkgewoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19LT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBmb3IgbXkgJEZBUUl0ZW0gKCBAeyAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskRkFRSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZBUUl0ZW0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZBUUl0ZW0tPnskS2V5fSA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIC0gU3VjY2VzcyBzdGF0dXMiLAogICAgKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YX0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQgKG5lZWRzIGNvbmZpZ3VyZWQgYW5kIHJ1bm5pbmcgd2Vic2VydmVyKSIsCiAgICApOwoKfSAgICAjZW5kIGxvb3AKCiMgY2xlYW4gdXAgd2ViLXNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzLWVydmljZSAkV2Vic2VydmljZUlEIiwKKTsKCiMgY2xlYW4gdXAgRkFRIHN0dWZmCm15ICRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRE9uZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBJdGVtSUQ6ICRJdGVtSURPbmUiLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkSXRlbUlEVHdvLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEl0ZW1JRDogJEl0ZW1JRFR3byIsCik7CgokRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRJdGVtSURUaHJlZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBJdGVtSUQ6ICRJdGVtSURUaHJlZSIsCik7CgokRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRJdGVtSURGb3VyLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJEZBUURlbGV0ZSwKICAgICJGQVFEZWxldGUoKSAtIEl0ZW1JRDogJEl0ZW1JREZvdXIiLAopOwoKbXkgJENhdGVnb3J5RGVsZXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURGb3VyIiwKKTsKCiRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRFRocmVlLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIENhdGVnb3J5OiAkQ2F0ZWdvcnlJRFRocmVlIiwKKTsKCiRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRFR3bywKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURUd28iLAopOwoKJENhdGVnb3J5RGVsZXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlET25lLAogICAgVXNlcklEICAgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIENhdGVnb3J5OiAkQ2F0ZWdvcnlJRE9uZSIsCik7CgoxOwo=
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9//////////7///8EAAAABQAAAAYAAAAHAAAACAAAAP7///8KAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAAP7///83AAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAAAQAAAP7////+////BAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAA/v///yYAAAAnAAAAKAAAACkAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8BAP7/AwoAAP////8GCQIAAAAAAMAAAAAAAABGGAAAAE1pY3Jvc29mdCBXb3JkLURva3VtZW50AAoAAABNU1dvcmREb2MAEAAAAFdvcmQuRG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABMACgABAFsADwACAAAAAAAAAFQAABDx/wIAVAAAAAcARABlAGYAYQB1AGwAdAAAAAgAAAAxJAAqJAErAEIqAE9KAwBRSgMAQ0oYAG1ICQRzSAkEUEoFAG5I/wBeSgYAX0j/AHRI/wAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBQPL/oQBCAAAAGQBBAGIAcwBhAHQAegAtAFMAdABhAG4AZABhAHIAZABzAGMAaAByAGkAZgB0AGEAcgB0AAAAAAAAAAAAAAAAAC4AQhABAPIALgAAAAkAVABlAHgAdAAgAGIAbwBkAHkAAAAKAA8AE6QAABSkeAAAACAALxDxAAIBIAAAAAQATABpAHMAdAAAAAIAEAAEAF5KBwBAAP4fAQASAUAAAAAHAEMAYQBwAHQAaQBvAG4AAAANABEAE6R4ABSkeAAMJAEAEgBDShQANggBXkoHAGFKFABdCAEmAP4fAQAiASYAAAAFAEkAbgBkAGUAeAAAAAUAEgAMJAEABABeSgcAAAAAABQAAAAEAAAKAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyBQAAWAIAAAAAAAAAAAAAwQMAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTAwAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQBAACvAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQMAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDZAAAATwBUAFIAUwAuAG8AcgBnAA0ADQBUAEUAUwBUAA0ADQAIAA0ADQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEgQAABQEAAAeBAAAIAQAACIEAAAkBAAAJgQAACgEAAD09PT07/T09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQNqAAAAAFUIARZDSkAANQgBYUpAAFwIAU9KBABRSgQACAAEAAASBAAAFAQAAB4EAAAgBAAAJAQAACYEAAAoBAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP//////////AQAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACACgAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIAAgAAAAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAAAAQBPAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgD/////AwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAFAAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABKCAAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIABQAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAADgBAAAAAAAA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L0ZvbnQgNyAwIFINCiAgIC9YT2JqZWN0IDggMCBSDQogICAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIC9JbWFnZUIgXQ0KPj4NCmVuZG9iag0KDQoxIDAgb2JqDQo8PCAvVHlwZSAvUGFnZQ0KICAgL1BhcmVudCA1IDAgUg0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQ0KICAgL0dyb3VwIDw8IC9TIC9UcmFuc3BhcmVuY3kgL0NTIC9EZXZpY2VSR0IgL0kgdHJ1ZSA+Pg0KICAgL0NvbnRlbnRzIDIgMCBSDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8IC9UeXBlIC9QYWdlcw0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDU5NSA4NDIgXQ0KICAgL0tpZHMgWyAxIDAgUg0KICAgICAgICAgICBdDQogICAvQ291bnQgMQ0KPj4NCmVuZG9iag0KDQoxMCAwIG9iag0KPDwgL1R5cGUgL0NhdGFsb2cNCiAgIC9QYWdlcyA1IDAgUg0KPj4NCmVuZG9iag0KDQoxMSAwIG9iag0KPDwgL0NyZWF0b3IgPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+DQovUHJvZHVjZXIgPEZFRkYwMDRGMDA3MDAwNjUwMDZFMDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyRTAwNkYwMDcyMDA2NzAwMjAwMDMyMDAyRTAwMzAwMDJEMDA3MDAwNzIwMDY1Pg0KL0NyZWF0aW9uRGF0ZSAoRDoyMDA3MDMwNTE1NTM1OSswMScwMCcpDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMTINCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMzY5OCAwMDAwMCBuDQowMDAwMDAwMDIxIDAwMDAwIG4NCjAwMDAwMDAzMTAgMDAwMDAgbg0KMDAwMDAwMDMzNiAwMDAwMCBuDQowMDAwMDAzODgzIDAwMDAwIG4NCjAwMDAwMDMzODIgMDAwMDAgbg0KMDAwMDAwMzUwMiAwMDAwMCBuDQowMDAwMDAzNTQzIDAwMDAwIG4NCjAwMDAwMDM1ODQgMDAwMDAgbg0KMDAwMDAwNDAxOSAwMDAwMCBuDQowMDAwMDA0MDc5IDAwMDAwIG4NCnRyYWlsZXINCjw8IC9TaXplIDEyDQogICAvUm9vdCAxMCAwIFINCiAgIC9JbmZvIDExIDAgUg0KICAgL0lEIFsgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5Pg0KICAgICAgICAgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5PiBdDQo+Pg0Kc3RhcnR4cmVmDQo0Mjk0DQolJUVPRg0K
VGVzdCBGQVExO01pc2M7ZW47ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MQpUZXN0IEZBUTI7TWlzYztlbjtleHRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkxClRlc3QgRkFRMztNaXNjO2VuO2V4dGVybmFsO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTEKVGVzdCBGQVE0O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTEKVGVzdCBGQVE1O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE2O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE3O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE4O01pc2M7ZW47aW50ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MgpUZXN0IEZBUTk7TWlzYztlbjtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkyClRlc3QgRkFRMTA7TWlzYztlbjtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkyClRlc3QgRkFRMTE7TWlzYztkZTtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTI7TWlzYztkZTtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTM7TWlzYztkZTtwdWJsaWM7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MwpUZXN0IEZBUTE0O01pc2M7ZGU7cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTMKVGVzdCBGQVExNTtNaXNjO2RlO3B1YmxpYztGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTY7TWlzYztkZTtwdWJsaWM7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE3O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE4O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE5O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTIwO01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NAo=
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIFJpY2hUZXh0LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgTW9kaWZ5ICJGQVE6OkFnZW50OjpTdGF0ZVR5cGVzIiB0byBvbmx5IHNob3cgJ2ludGVybmFsJyBhbmQgJ3B1YmxpYycgRkFRIHN0YXRlIHR5cGVzIGluIGFnZW50IGludGVyZmFjZS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycsCiAgICAgICAgICAgIFZhbHVlID0+IFsgJ2ludGVybmFsJywgJ3B1YmxpYycgXSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHNjcmlwdCBhbGlhcy4KICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFBZGQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFBZGQiKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhUaXRsZSBLZXl3b3JkcyBDYXRlZ29yeUlEIFN0YXRlSUQgVmFsaWRJRCBMYW5ndWFnZUlEIEZpbGVVcGxvYWQKICAgICAgICAgICAgRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ2IEZBUVN1Ym1pdCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIFZlcmlmeSBvbmx5ICdpbnRlcm5hbCAoYWdlbnQpJyBhbmQgJ3B1YmxpYyAoYWxsKScgRkFRIHN0YXRlIHR5cGVzIGFyZSBhdmFpbGFibGUuCiAgICAgICAgIyBUaGVyZSBpcyBubyAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgRkFRIHN0YXRlIG9wdGlvbi4gU2VlIGJ1ZyMxNDUxNS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNTdGF0ZUlEIG9wdGlvbltWYWx1ZT0yXScpLmxlbmd0aDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJGQVEgc3RhdGUgJ2ludGVybmFsIChhZ2VudCknIGlzIGF2YWlsYWJsZSBhcyBvcHRpb24uIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjU3RhdGVJRCBvcHRpb25bVmFsdWU9M10nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiRkFRIHN0YXRlICdwdWJsaWMgKGFsbCknIGlzIGF2YWlsYWJsZSBhcyBvcHRpb24uIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1N0YXRlSUQgb3B0aW9uW1ZhbHVlPTFdJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkZBUSBzdGF0ZSAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgaXMgbm90IGF2YWlsYWJsZSBhcyBvcHRpb24uIgogICAgICAgICk7CgogICAgICAgICMgVGVzdCBwYXJhbXMuCiAgICAgICAgbXkgJEZBUVRpdGxlICAgID0gJ0ZBUSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkRkFRU3ltcHRvbSAgPSAnU2VsZW5pdW0gU3ltcHRvbSc7CiAgICAgICAgbXkgJEZBUVByb2JsZW0gID0gJ1NlbGVuaXVtIFByb2JsZW0nOwogICAgICAgIG15ICRGQVFTb2x1dGlvbiA9ICdTZWxlbml1bSBTb2x1dGlvbic7CiAgICAgICAgbXkgJEZBUUNvbW1lbnQgID0gJ1NlbGVuaXVtIENvbW1lbnQnOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRVGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0tleXdvcmRzIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bScpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQ2F0ZWdvcnlJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNTdGF0ZUlEJykudmFsKCcyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1ZhbGlkSUQnKS52YWwoJzEnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjTGFuZ3VhZ2VJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQxIiwgICAgJ2NzcycgKS0+c2VuZF9rZXlzKCRGQVFTeW1wdG9tKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDIiLCAgICAnY3NzJyApLT5zZW5kX2tleXMoJEZBUVByb2JsZW0pOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZpZWxkMyIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRU29sdXRpb24pOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZpZWxkNiIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRQ29tbWVudCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRkFRU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUUJvZHkiKS5sZW5ndGgnICk7CgogICAgICAgICMgVmVyaWZ5IHRlc3QgRkFRIGlzIGNyZWF0ZWQuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKCAkRkFRU3ltcHRvbSwgJEZBUVByb2JsZW0sICRGQVFTb2x1dGlvbiwgJEZBUUNvbW1lbnQgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdCBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBHZXQgdGVzdCBjcmVhdGVkIEZBUSBJRC4KICAgICAgICBteSAkRkFRSXRlbSA9ICREQk9iamVjdC0+UXVvdGUoJEZBUVRpdGxlKTsKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtIFdIRVJFIGZfc3ViamVjdCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRGQVFUaXRsZSBdCiAgICAgICAgKTsKICAgICAgICBteSAkSXRlbUlEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkSXRlbUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJEl0ZW1JRCBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUUNhdGVnb3J5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnkiKTsKCiAgICAgICAgIyBDaGVjayBBZ2VudEZBUUNhdGVnb3J5IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBDbGljayBvbiAnQWRkIGNhdGVnb3J5Jy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249QWRkJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgcGFnZS4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoTmFtZSBQYXJlbnRJRCBQZXJtaXNzaW9uR3JvdXBzIFZhbGlkSUQgQ29tbWVudCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGNhdGVnb3J5LgogICAgICAgIG15ICRDYXRlZ29yeU5hbWUgPSAnQ2F0ZWdvcnkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ2F0ZWdvcnlOYW1lKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNQZXJtaXNzaW9uR3JvdXBzJykudmFsKFwkKCcjUGVybWlzc2lvbkdyb3VwcyBvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24gKCkgeyByZXR1cm4gXCQodGhpcykuaHRtbCgpID09ICd1c2Vycyc7IH0gKS52YWwoKSApLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNWYWxpZElEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNDb21tZW50IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBDYXRlZ29yeScpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgdGVzdCBjYXRlZ29yeSBpcyBjcmVhdGVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENhdGVnb3J5TmFtZSApID4gLTEsCiAgICAgICAgICAgICIkQ2F0ZWdvcnlOYW1lIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBHZXQgdGVzdCBjcmVhdGVkIGNhdGVnb3J5IElELgogICAgICAgIG15ICRDYXRlZ29yeSA9ICREQk9iamVjdC0+UXVvdGUoJENhdGVnb3J5TmFtZSk7CiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgV0hFUkUgbmFtZSA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDYXRlZ29yeU5hbWUgXQogICAgICAgICk7CiAgICAgICAgbXkgJENhdGVnb3J5SUQ7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgQ2xpY2sgb24gZGVsZXRlIGljb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVsZXRlQ2F0ZWdvcnlJRCRDYXRlZ29yeUlEIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCIjRGlhbG9nQnV0dG9uMSIpLmxlbmd0aCcgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gIVwkKCcuRGlhbG9nLk1vZGFsJykubGVuZ3RoIiApOwoKICAgICAgICAjIFZlcmlmeSB0ZXN0IGNyZWF0ZWQgY2F0ZWdvcnkgaXMgZGVsZXRlZC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDYXRlZ29yeU5hbWUgKSA9PSAtMSwKICAgICAgICAgICAgIiRDYXRlZ29yeU5hbWUgaXMgbm90IGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kSXRlbUlEO05hdj0iKTsKCiAgICAgICAgIyBWZXJpZnkgaXRzIHJpZ2h0IHNjcmVlbi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gJ0RlbGV0ZScuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRGlhbG9nQnV0dG9uMSIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBWZXJpZnkgZGVsZXRlIG1lc3NhZ2UuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPycgKSA+IC0xLAogICAgICAgICAgICAiRGVsZXRlIG1lc3NhZ2UgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRXhlY3V0ZSBkZWxldGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gISQoIi5EaWFsb2cuTW9kYWwiKS5sZW5ndGgnICk7CgogICAgICAgICMgVmVyaWZ5IGRlbGV0ZSBhY3Rpb24uCiAgICAgICAgIyBUcnkgdG8gbmF2aWdhdGUgdG8gdGhlIEFnZXRuRkFRWm9vbSBvZiBkZWxldGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiTm8gc3VjaCBJdGVtSUQgJEl0ZW1JRCEiICkgPiAtMSwKICAgICAgICAgICAgIkRlbGV0ZSBhY3Rpb24gLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIFJpY2hUZXh0LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHRlc3QgcGFyYW1zLgogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJVRlc3QgICAgID0gKAogICAgICAgICAgICBTdG9yZWQgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ1NlbGVuaXVtIEtleXdvcmRzJywKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTZWxlbml1bSBTeW1wdG9tJywKICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICdTZWxlbml1bSBQcm9ibGVtJywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTZWxlbml1bSBTb2x1dGlvbicsCiAgICAgICAgICAgICAgICBGaWVsZDYgICAgICA9PiAnU2VsZW5pdW0gQ29tbWVudCcsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEVkaXRlZCA9PiB7CiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUgLiAnIEVkaXQnLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAyLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ1NlbGVuaXVtIEtleXdvcmRzIEVkaXQnLAogICAgICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1NlbGVuaXVtIFN5bXB0b20gRWRpdCcsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnU2VsZW5pdW0gUHJvYmxlbSBFZGl0JywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTZWxlbml1bSBTb2x1dGlvbiBFZGl0JywKICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgID0+ICdTZWxlbml1bSBDb21tZW50IEVkaXQnLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAyLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgRkFRLgogICAgICAgIG15IEBJdGVtSURzOwogICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICV7ICRUZXN0e1N0b3JlZH0gfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEl0ZW1JRHMsICRJdGVtSUQ7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CgogICAgICAgICMgVmVyaWZ5IGl0cyByaWdodCBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdFZGl0JyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKSB8fCBkaWUgIlBvcHVwIHdpbmRvdyBub3QgY3JlYXRlZCAoZmlyc3QgdGltZSkuIjsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1RpdGxlIikubGVuZ3RoOycgKTsKCiAgICAgICAgIyBWZXJpZnkgc3RvcmVkIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFN0b3JlZCAoIHNvcnQga2V5cyAleyAkVGVzdHtTdG9yZWR9IH0gKSB7CiAgICAgICAgICAgIGlmICggJFN0b3JlZCBuZSAnQ29udGVudFR5cGUnICkgewogICAgICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnIycgLiAkU3RvcmVkLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAiJFRlc3R7U3RvcmVkfS0+eyRTdG9yZWR9IiwKICAgICAgICAgICAgICAgICAgICAiIyRTdG9yZWQgc3RvcmVkIHZhbHVlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRWRpdCB0ZXN0IEZBUS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI1N0YXRlSUQnLAogICAgICAgICAgICBWYWx1ZSAgID0+IDIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI0xhbmd1YWdlSUQnLAogICAgICAgICAgICBWYWx1ZSAgID0+IDIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNLZXl3b3JkcyIsICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDEiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDIiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDMiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDYiLCAgICdjc3MnICktPnNlbmRfa2V5cygnIEVkaXQnKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI1ZhbGlkSUQnLAogICAgICAgICAgICBWYWx1ZSAgID0+IDIsCiAgICAgICAgKTsKCiAgICAgICAgIyBTdWJtaXQgYW5kIHN3aXRjaCBiYWNrIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGQVFTdWJtaXQiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApIHx8IGRpZSAiUG9wdXAgd2luZG93IG5vdCBjbG9zZWQuIjsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9JEl0ZW1JRFwiXScpLmxlbmd0aDsiCiAgICAgICAgKTsKICAgICAgICBzbGVlcCAyOwoKICAgICAgICAjIENsaWNrIG9uICdFZGl0JyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKSB8fCBkaWUgIlBvcHVwIHdpbmRvdyBub3QgY3JlYXRlZCAoc2Vjb25kIHRpbWUpLiI7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNUaXRsZSIpLmxlbmd0aDsnICk7CgogICAgICAgICMgVmVyaWZ5IGVkaXRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRFZGl0ZWQgKCBzb3J0IGtleXMgJXsgJFRlc3R7RWRpdGVkfSB9ICkgewogICAgICAgICAgICBpZiAoICRFZGl0ZWQgbmUgJ0NvbnRlbnRUeXBlJyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyMnIC4gJEVkaXRlZCwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0e0VkaXRlZH0tPnskRWRpdGVkfSIsCiAgICAgICAgICAgICAgICAgICAgIiMkRWRpdGVkIHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENsb3NlICdFZGl0JyBwb3AtdXAgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+Y2xvc2UoKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICkgfHwgZGllICJQb3B1cCB3aW5kb3cgbm90IGNsb3NlZC4iOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIEVuYWJsZSBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUFkZCIpOwoKICAgICAgICAjIFdhaXQgdW50aWwgalF1ZXJ5IGlzIGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nOyIgKTsKCiAgICAgICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgICAgIG15ICRFbmNvZGVPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICAgICBteSAkTWFpbk9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICAgICAjIENyZWF0ZSBGQVEgaXRlbSB3aXRoIGlubGluZSBhdHRhY2htZW50LgogICAgICAgIG15ICRMb2NhdGlvbiA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpCiAgICAgICAgICAgIC4gIi9zY3JpcHRzL3Rlc3Qvc2FtcGxlL1dlYlVwbG9hZENhY2hlL1dlYlVwbG9hZENhY2hlLVRlc3QxLnBuZyI7CiAgICAgICAgbXkgJENvbnRlbnRSZWYgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICRMb2NhdGlvbiwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgICAgICk7CiAgICAgICAgbXkgJENvbnRlbnQgPSAkeyRDb250ZW50UmVmfTsKICAgICAgICAkRW5jb2RlT2JqZWN0LT5FbmNvZGVPdXRwdXQoIFwkQ29udGVudCApOwoKICAgICAgICBteSAkRm9ybUlEICAgICAgPSAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ2lucHV0W25hbWU9Rm9ybUlEXScpLnZhbCgpOyIpOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICdJbmxpbmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkQ29udGVudElEICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICREaXNwb3NpdGlvbiA9ICdpbmxpbmUnOwoKICAgICAgICAjIEFkZCBwaWN0dXJlIHRvIHVwbG9hZCBjYWNoZS4KICAgICAgICBteSAkQWRkID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAiJEZpbGVuYW1lLnBuZyIsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJENvbnRlbnRJRCwKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJERpc3Bvc2l0aW9uLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRBZGQsCiAgICAgICAgICAgICJJbmxpbmUgcGljdHVyZSBpcyBhZGRlZCB0byB1cGxvYWQgY2FjaGUgc3VjY2Vzc2Z1bGx5IiwKICAgICAgICApOwoKICAgICAgICBteSAkRmllbGQxSFRNTCA9CiAgICAgICAgICAgICc8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT4nIC4KICAgICAgICAgICAgJzxpbWcgYWx0PSIiIHNyYz0iLycgLiAkU2NyaXB0QWxpYXMgLiAnaW5kZXgucGw/QWN0aW9uPVBpY3R1cmVVcGxvYWQ7Rm9ybUlEPScgLiAkRm9ybUlEIC4KICAgICAgICAgICAgJztDb250ZW50SUQ9JyAuICRDb250ZW50SUQgLiAnIiAvPjwvYm9keT48L2h0bWw+JzsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAnY3NzJyApLT5zZW5kX2tleXMoJ1Rlc3QgVGl0bGUnKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI0NhdGVnb3J5SUQnLAogICAgICAgICAgICBWYWx1ZSAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI1N0YXRlSUQnLAogICAgICAgICAgICBWYWx1ZSAgID0+IDIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPklucHV0RmllbGRWYWx1ZVNldCgKICAgICAgICAgICAgRWxlbWVudCA9PiAnI1N0YXRlSUQnLAogICAgICAgICAgICBWYWx1ZSAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIENLRURJVE9SIGlzIGxvYWRlZCAodGhlcmUgYXJlIDQgZWRpdG9ycyBpbiB0aGUgc2NyZWVuKS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnYm9keS5ja2VfZWRpdGFibGUnLCBcJCgnLmNrZV93eXNpd3lnX2ZyYW1lJykuY29udGVudHMoKSkubGVuZ3RoID09PSA0OyIKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJDS0VESVRPUi5pbnN0YW5jZXMuRmllbGQxLnNldERhdGEoJyRGaWVsZDFIVE1MJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIENLRURJVE9SLmluc3RhbmNlcy5GaWVsZDEuZ2V0RGF0YSgpLmluZGV4T2YoJ0Zvcm1JRD0kRm9ybUlEO0NvbnRlbnRJRD0kQ29udGVudElEJykgPiAtMTsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNWYWxpZElEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgU3VibWl0IGFuZCBzd2l0Y2ggYmFjayB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRkFRU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2FbaHJlZio9XCJBY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD1cIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgSXRlbUlELgogICAgICAgIG15IEBGQVEgPSBzcGxpdCggJ0l0ZW1JRD0nLCAkU2VsZW5pdW0tPmdldF9jdXJyZW50X3VybCgpICk7CiAgICAgICAgcHVzaCBASXRlbUlEcywgJEZBUVsxXTsKCiAgICAgICAgIyBHZXQgYXR0YWNobWVudHMgYmVmb3JlIEVkaXQgc2NyZWVuLgogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSURzWzFdLAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHNjYWxhciBARXhpc3RpbmdBdHRhY2htZW50cywKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkJlZm9yZSBFZGl0IHNjcmVlbiAtIHRoZXJlIGlzIG9uZSBJbmxpbmUgYXR0YWNobWVudCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRFeGlzdGluZ0F0dGFjaG1lbnRzWzBdLT57RmlsZW5hbWV9LAogICAgICAgICAgICAiJEZpbGVuYW1lLnBuZyIsCiAgICAgICAgICAgICJCZWZvcmUgRWRpdCBzY3JlZW4gLSBJbmxpbmUgYXR0YWNobWVudCAkRmlsZW5hbWUucG5nIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdFZGl0JyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD0kSXRlbUlEc1sxXScgKV0iKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICkgfHwgZGllICJQb3B1cCB3aW5kb3cgbm90IGNyZWF0ZWQuIjsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUVN1Ym1pdCIpLmxlbmd0aDsnICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNGQVFTdWJtaXQiLAogICAgICAgICk7CgogICAgICAgICMgU3VibWl0IGFuZCBzd2l0Y2ggYmFjayBtYWluIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCckKCIjRkFRU3VibWl0IikuY2xpY2soKTsnKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKSB8fCBkaWUgIlBvcHVwIHdpbmRvdyBub3QgY2xvc2VkLiI7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdGluZyBqdXN0IHRvIGJlIHN1cmUgYXR0YWNobWVudCBpcyBzdG9yZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBHZXQgYXR0YWNobWVudHMgYWZ0ZXIgRWRpdCBzY3JlZW4uCiAgICAgICAgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRHNbMV0sCiAgICAgICAgICAgIFNob3dJbmxpbmUgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgc2NhbGFyIEBFeGlzdGluZ0F0dGFjaG1lbnRzLAogICAgICAgICAgICAxLAogICAgICAgICAgICAiQWZ0ZXIgRWRpdCBzY3JlZW4gLSB0aGVyZSBpcyBvbmUgSW5saW5lIGF0dGFjaG1lbnQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkRXhpc3RpbmdBdHRhY2htZW50c1swXS0+e0ZpbGVuYW1lfSwKICAgICAgICAgICAgIiRGaWxlbmFtZS5wbmciLAogICAgICAgICAgICAiQWZ0ZXIgRWRpdCBzY3JlZW4gLSBJbmxpbmUgYXR0YWNobWVudCAkRmlsZW5hbWUucG5nIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRcy4KICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEl0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZGlzYWJsZSBzaG93IGludmFsaWQgRkFRIGl0ZW1zIFN5U0NvbmZpZwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0ludmFsaWRGQVFJdGVtcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgRkFRIG9iamVjdAogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15IEBGQVFzOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBmb3IgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVGQVEgPSAoCiAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBARkFRcywgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBvbmUgRkFRIGFzIGludmFsaWQgc2VlIGJ1ZyBidWcjMTE0OTggKGh0dHA6Ly9idWdzLm90b2JvLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0OTgpU2hvd0ludmFsaWRGQVFJdGVtcwogICAgICAgIG15ICRJbnZhbGlkRkFRVGl0bGUgPSAiSW52YWxpZCAkRkFRc1swXS0+e0ZBUVRpdGxlfSI7CiAgICAgICAgbXkgJFN1Y2Nlc3MgICAgICAgICA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgICAgPT4gJEZBUXNbMF0tPntJdGVtSUR9LAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkSW52YWxpZEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMiwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRGQVFzWzBdLT57RkFRVGl0bGV9ID0gJEludmFsaWRGQVFUaXRsZTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUV4cGxvcmVyIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFeHBsb3JlciIpOwoKICAgICAgICAjIGNoZWNrIEFnZW50RkFRRXhwbG9yZXIgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgdGVzdCBkYXRhIGZvciBleHBsb3JlciBzY3JlZW4KICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0ZBUSBFeHBsb3JlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntTY3JlZW5EYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntTY3JlZW5EYXRhfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNsaWNrIG9uICdNaXNjJywgZ28gb24gc3ViY2F0ZWdvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdNaXNjJywgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIG9yZGVyIEZBUSBpdGVtIHBlciBGQVFJRCBieSBEb3duCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPTE7U29ydEJ5PUZBUUlEO09yZGVyQnk9RG93biIpOwoKICAgICAgICAjIHZlcmlmeSBJbnZhbGlkIEZBUSBpcyBub3QgdmlzaWJsZSBvbiBleHBsb3JlciBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFzWzBdLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICIkRkFRc1swXS0+e0ZBUVRpdGxlfSBpcyBub3QgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZW5hYmxlIHNob3cgaW52YWxpZCBGQVEgaXRlbXMgU3lTQ29uZmlnCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTaG93SW52YWxpZEZBUUl0ZW1zJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJlZnJlc2ggc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZFJlZnJlc2goKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnLk1hc3RlckFjdGlvbi5JbnZhbGlkIHRkIGRpdjplcSgwKScpLnRleHQoKS50cmltKCkiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYW5kIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRcwogICAgICAgIGZvciBteSAkRkFRIChARkFRcykgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyB0ZXN0IEZBUSBvbiBzY3JlZW4KICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0ciNJdGVtSURfIiAuICRGQVEtPntJdGVtSUR9IC4gIl8uTWFzdGVyQWN0aW9uIHRkIGRpdiIsICdjc3MnICktPmdldF90ZXh0KCksCiAgICAgICAgICAgICAgICAkRkFRLT57RkFRVGl0bGV9LAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtIElEICRGQVEtPntJdGVtSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlci4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICMgR2V0IHRlc3QgdXNlciBJRC4KICAgICAgICBteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgTG9naW4gYXMgdGVzdCB1c2VyLgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFab29tIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CgogICAgICAgICMgVmVyaWZ5IGl0cyByaWdodCBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdIaXN0b3J5JyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFIaXN0b3J5O0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5XaWRnZXRTaW1wbGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgVmVyaWZ5IGhpc3RvcnkgbWVzc2FnZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkVGVzdFVzZXJMb2dpbiAoJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4pIiApID4gLTEsCiAgICAgICAgICAgICJIaXN0b3J5IGVudHJ5IGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsb3NlICdIaXN0b3J5JyBwb3AtdXAgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+Y2xvc2UoKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBjcmVhdGVkIEZBUS4KICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUpvdXJuYWwgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFKb3VybmFsIik7CgogICAgICAgICMgY2hlY2sgQWdlbnRGQVFKb3VybmFsIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGhlYWQgdHIgdGgiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGJvZHkgdHIgdGQiLCAnY3NzJyApOwoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gdGVzdCBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2RpdltcQHRpdGxlPSckRkFRVGl0bGUnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgdmVyaWZ5IHdlIGFyZSBpbiBBZ2VudEZBUVpvb20gc2NyZWVuCiAgICAgICAgbXkgJFVSTEFjdGlvbiA9ICRTZWxlbml1bS0+Z2V0X2N1cnJlbnRfdXJsKCk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBpbmRleCggJFVSTEFjdGlvbiwgIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRJdGVtSUQiICkgPiAtMSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkxpbmsgZnJvbSBKb3VybmFsIHRvIFpvb20gdmlldyAtIHN1Y2Nlc3MiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIG5ldyB0ZXN0IHVzZXIgYW5kIGxvZ2luIHdpdGggc3RhdHMgcGVybWlzc2lvbgogICAgICAgICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdzdGF0cycsIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUpvdXJuYWwiKTsKCiAgICAgICAgIyBGQVEgaXRlbSBpcyBjcmVhdGVkIGluIE1pc2MgY2F0ZWdvcnksIHVzZXJzIHdpdGggc3RhdHMgcGVybWlzc2lvbiBkb24ndCBzZWUgaXQKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0VtcHR5TWVzc2FnZVNtYWxsJykudGV4dCgpLnRyaW0oKSIpLAogICAgICAgICAgICAnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZCcsCiAgICAgICAgICAgICJUaGVyZSBpcyBubyBwZXJtaXNzaW9uIHRvIHNlZSBGQVEgaXRlbXMiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRTGFuZ3VhZ2Ugc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFMYW5ndWFnZSIpOwoKICAgICAgICAjIENoZWNrIGFkZCBidXR0b24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUFkZCcgKV0iKTsKCiAgICAgICAgIyBDaGVjayBBZ2VudEZBUUxhbmd1YWdlIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBDaGVjayBFbmdsaXNoIGxhbmd1YWdlIC0gJ2VuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJ2VuJywgJ2xpbmtfdGV4dCcgKTsKCiAgICAgICAgIyBDaGVjayBHZXJtYW4gTGFuZ3VhZ2UgLSAnZGUnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnZGUnLCAnbGlua190ZXh0JyApOwoKICAgICAgICAjIEFkZCB0ZXN0IGxhbmd1YWdlIC0gU3BhbmlzaCAoZXMpLgogICAgICAgIG15ICRGQVFMYW5ndWFnZSA9ICdlcyc7CgogICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgJ2VzIC0gTGFuZ3VhZ2UnIGhhcyBiZWVuIGFkZGVkIGJlZm9yZS4KICAgICAgICBteSAkRXhpc3RzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgTmFtZSAgID0+ICRGQVFMYW5ndWFnZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUFkZCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICBpZiAoJEV4aXN0cykgewogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRGQVFMYW5ndWFnZSk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHR5cGU9J3N1Ym1pdCddIiktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5EaWFsb2cuTW9kYWwuQWxlcnQiKS5sZW5ndGggJiYgJCgiI05hbWUuRXJyb3IiKS5sZW5ndGgnICk7CgogICAgICAgICAgICAjIENsb3NlIGFsZXJ0IGRpYWxvZy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICEkKCIuRGlhbG9nLk1vZGFsLkFsZXJ0IikubGVuZ3RoJyApOwoKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjTmFtZScpLmhhc0NsYXNzKCdTZXJ2ZXJFcnJvcicpIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICcxJywKICAgICAgICAgICAgICAgICdUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdvIGJhY2sgb24gTGFuZ3VhZ2Ugb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlIik7CgogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkRkFRTGFuZ3VhZ2UpOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCIuRGF0YVRhYmxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIEdldCBJRCBmb3IgdGVzdCBsYW5ndWFnZS4KICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRGQVFMYW5ndWFnZSwKICAgICAgICApOwoKICAgICAgICAjIFZlcmlmeSB0ZXN0IEZBUSBoYXMgYmVlbiBjcmVhdGVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMYW5ndWFnZUlEIiApID4gLTEsCiAgICAgICAgICAgICJUZXN0IGxhbmd1YWdlIGlzIGNyZWF0ZWQgLSAkRkFRTGFuZ3VhZ2UiLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgYWRkZWQgJ3Rlc3QnIGxhbmd1YWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiJEZBUUxhbmd1YWdlIiwgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI05hbWUnLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgJEZBUUxhbmd1YWdlLAogICAgICAgICAgICAiU3RvcmVkIGxhbmd1YWdlIG5hbWUgJEZBUUxhbmd1YWdlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgR28gYmFjayBvbiBMYW5ndWFnZSBvdmVydmlldyBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdDYW5jZWwnLCAnbGlua190ZXh0JyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgSWYgdGVzdCBsYW5ndWFnZSB3YXMgY3JlYXRlZCBpbiB0aGUgdGVzdCwgZGVsZXRlIGl0LgogICAgICAgIGlmICggISRFeGlzdHMgKSB7CgogICAgICAgICAgICAjIERlbGV0ZSAndGVzdCcgbGFuZ3VhZ2UuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0RlbGV0ZUxhbmd1YWdlSUQkTGFuZ3VhZ2VJRCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNEaWFsb2dCdXR0b24xIikubGVuZ3RoJyApOwoKICAgICAgICAgICAgIyBWZXJpZnkgZGVsZXRlIG1lc3NhZ2UuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/JyApID4gLTEsCiAgICAgICAgICAgICAgICAiRGVsZXRlIG1lc3NhZ2UgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEV4ZWN1dGUgZGVsZXRlLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEaWFsb2dCdXR0b24xIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gISQoIi5EaWFsb2cuTW9kYWwiKS5sZW5ndGgnICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwoKICAgICAgICAgICAgIyBWZXJpZnkgdGVzdCBGQVEgaGFzIGJlZW4gZGVsZXRlZC4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMYW5ndWFnZUlEIiApID09IC0xLAogICAgICAgICAgICAgICAgIlRlc3QgbGFuZ3VhZ2UgaXMgZGVsZXRlZCAtICRGQVFMYW5ndWFnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgU2V0IGxpbmsgb2JqZWN0IHZpZXcgbW9kZSB0byBzaW1wbGUuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ1NpbXBsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgRkFROjpUaXRsZVNpemUuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6VGl0bGVTaXplJywKICAgICAgICAgICAgVmFsdWUgPT4gJzUwJywKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIuCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAjIEdldCB0ZXN0IHVzZXIgSUQuCiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEgaXRlbXMuCiAgICAgICAgbXkgQEl0ZW1JRHM7CiAgICAgICAgbXkgQEZBUU51bWJlcnM7CiAgICAgICAgZm9yIG15ICRGQVEgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDQgICAgICA9PiAnRmllbGQ0Li4uJywKICAgICAgICAgICAgICAgIEZpZWxkNSAgICAgID0+ICdGaWVsZDUuLi4nLAogICAgICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJ0NvbW1lbnQuLi4nLAogICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBASXRlbUlEcywgJEl0ZW1JRDsKCiAgICAgICAgICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZBUU51bWJlciA9ICRGQVF7TnVtYmVyfTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJDcmVhdGVkIFRpY2tldCBJRCAkSXRlbUlEIC0gRkFRIE51bWJlciAkRkFRTnVtYmVyIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEZBUU51bWJlcnMsICRGQVFOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIExvZ2luIGFzIHRlc3QgdXNlci4KICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGxpbmsgb2JqZWN0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTdWJtaXRTZWFyY2giKS5sZW5ndGg7JyApOwoKICAgICAgICAjIFNlYXJjaCBmb3Igc2Vjb25kIGNyZWF0ZWQgdGVzdCBmYXEuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi4vLypbXEBpZD0nU0VBUkNIOjpOdW1iZXInXSIpLT5zZW5kX2tleXMoICRGQVFOdW1iZXJzWzFdICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjU3VibWl0U2VhcmNoJykuY2xpY2soKTsiKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNXaWRnZXRGQVEnKS5sZW5ndGggJiYgXCQoJ2lucHV0W3ZhbHVlPSRJdGVtSURzWzFdXVt0eXBlPWNoZWNrYm94XScpLmxlbmd0aDsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNBZGRMaW5rcyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBMaW5rIGNyZWF0ZWQgdGVzdCBGQVEgaXRlbXMuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nJEl0ZW1JRHNbMV0nXVtcQHR5cGU9J2NoZWNrYm94J10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnaW5wdXRbdmFsdWU9JEl0ZW1JRHNbMV1dW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQnKS5sZW5ndGg7IgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdQYXJlbnRDaGlsZDo6VGFyZ2V0JykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiI1R5cGVJZGVudGlmaWVyIikudmFsKCkgPT09ICJQYXJlbnRDaGlsZDo6VGFyZ2V0IjsnICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0FkZExpbmtzIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIHpvb20gdmlldyBvZiBjcmVhdGVkIHRlc3QgRkFRIGl0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kSXRlbUlEc1swXSIpOwoKICAgICAgICAjIFZlcmlmeSB0aGF0IHBhcmVudCB0ZXN0IEZBUSBpcyBsaW5rZWQgd2l0aCBjaGlsZCB0ZXN0IEZBUS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdDaGlsZCcgKSA+IC0xLAogICAgICAgICAgICAiQ2hpbGQgLSBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJGOiIgLiAkRkFRTnVtYmVyc1sxXSApID4gLTEsCiAgICAgICAgICAgICJUaWNrZXROdW1iZXIgJEZBUU51bWJlcnNbMV0gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBjaGlsZCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRHNbMV0nICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgdGhhdCBjaGlsZCB0ZXN0IEZBUSBpcyBsaW5rZWQgd2l0aCBwYXJlbnQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnUGFyZW50JyApID4gLTEsCiAgICAgICAgICAgICJQYXJlbnQgLSBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJGOiIgLiAkRkFRTnVtYmVyc1swXSApID4gLTEsCiAgICAgICAgICAgICJGQVFOdW1iZXIgJEZBUU51bWJlcnNbMF0gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBUZXN0IEZBUSB0aXRsZSBsZW5ndGggaW4gY29tcGxleCB2aWV3IGZvciBsaW5rZWQgRkFRcy4KICAgICAgICAjIFNldCBsaW5rIG9iamVjdCB2aWV3IG1vZGUgdG8gY29tcGxleC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnTGlua09iamVjdDo6Vmlld01vZGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29tcGxleCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBVcGRhdGUgdGVzdCBGQVEgdGl0bGUgdG8gbW9yZSB0aGVuIDUwIGNoYXJhY3RlcnMgKHRoZXJlIGlzIDY1KS4KICAgICAgICBteSAkTG9uZ0ZBUVRpdGxlID0gJ1RoaXMgaXMgbG9uZyB0ZXN0IG15aXRlbSB0aXRsZSB3aXRoIG1vcmUgdGhlbiA1MCBjaGFyYWN0ZXJzIGluIGl0JzsKCiAgICAgICAgIyBGQVE6OlRpdGxlU2l6ZSBpcyBzZXQgdG8gNTAgYXQgdGhlIGJlZ2lubmluZyBvZiB0ZXN0LgogICAgICAgIG15ICRTaG9ydFRpdGxlID0gc3Vic3RyKCAkTG9uZ0ZBUVRpdGxlLCAwLCA0NyApIC4gIi4uLiI7CgogICAgICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRHNbMV0sCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVEsCiAgICAgICAgICAgIFRpdGxlICA9PiAkTG9uZ0ZBUVRpdGxlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlVwZGF0ZWQgRkFRIHRpdGxlIC0gJEl0ZW1JRHNbMV0iCiAgICAgICAgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgIyBDaGVjayBmb3IgdXBkYXRlZCBGQVEgdGl0bGUgaW4gbGlua2VkIEZBUSBpdGVtcyBjb21wbGV4IHZpZXcgdGFibGUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkTG9uZ0ZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRMb25nRkFRVGl0bGUgLSBmb3VuZCBpbiBBZ2VudEZBUVpvb20gY29tcGxleCB2aWV3IG1vZGUiLAogICAgICAgICk7CgogICAgICAgICMgQ29sbGFwc2UgYWxsIEZBUSBmaWVsZHMgdG8gc2hvdyBsaW5rIHRhYmxlIGluIHRoZSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRkFRQm9keSAuRXhwYW5kZWQgYScpLmNsaWNrKCk7IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yICJkZWZhdWx0IiB2aXNpYmxlIGNvbHVtbnMgaW4gdGhlIExpbmtlZCBGQVEgd2lkZ2V0LgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMSknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIEZBUSMgJywKICAgICAgICAgICAgJ0RlZmF1bHQgMXN0IGNvbHVtbiBuYW1lJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMiknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIFRpdGxlICcsCiAgICAgICAgICAgICdEZWZhdWx0IDJuZCBjb2x1bW4gbmFtZScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjV2lkZ2V0RkFRIC5EYXRhVGFibGUgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDMpJykudGV4dCgpOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJyBTdGF0ZSAnLAogICAgICAgICAgICAnRGVmYXVsdCAzdGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOm50aC1jaGlsZCg0KScpLnRleHQoKTsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICcgQ3JlYXRlZCAnLAogICAgICAgICAgICAnRGVmYXVsdCA0dGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoNSknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIExpbmtlZCBhcyAnLAogICAgICAgICAgICAnRGVmYXVsdCA1dGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CgogICAgICAgICMgU2hvdyBBY3Rpb25NZW51IC0gdXN1YWxseSB0aGlzIGlzIGRvbmUgd2hlbiB1c2VyIGhvdmVycywgaG93ZXZlciBpdCdzIG5vdCBwb3NzaWJsZSB0byBzaW11bGF0ZSB0aGlzIGJlaGF2aW9yLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1dpZGdldEZBUSAuQWN0aW9uTWVudScpLnNob3coKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiBjb2x1bW4gc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgTGlua2VkIEZBUSB3aWRnZXQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdhI2xpbmtvYmplY3QtRkFRLXRvZ2dsZScsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCBmb3IgdGhlIGNvbXBsZXRlIHdpZGdldCB0byBiZSBmdWxseSBzbGlkZWQgaW4gYWxsIHRoZSB3YXkgZG93biB0byB0aGUgc3VibWl0IGJ1dHRvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNsaW5rb2JqZWN0LUZBUV9zdWJtaXQ6dmlzaWJsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBUT0RPOiByZW1vdmUgbGltaXRhdGlvbiB0byBmaXJlZm94LgogICAgICAgIGlmICggJFNlbGVuaXVtLT57YnJvd3Nlcl9uYW1lfSBlcSAnZmlyZWZveCcgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICJUT0RPOiBEcmFnQW5kRHJvcCBpcyBjdXJyZW50bHkgZGlzYWJsZWQgaW4gRmlyZWZveCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBSZW1vdmUgQXBwcm92ZWQgZnJvbSBsZWZ0IHNpZGUsIGFuZCBwdXQgaXQgdG8gdGhlIHJpZ2h0IHNpZGUuCiAgICAgICAgICAgICRTZWxlbml1bS0+RHJhZ0FuZERyb3AoCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgPT4gJyNXaWRnZXRGQVEgI0F2YWlsYWJsZUZpZWxkLWxpbmtvYmplY3QtRkFRIGxpW2RhdGEtZmllbGRuYW1lPSJBcHByb3ZlZCJdJywKICAgICAgICAgICAgICAgIFRhcmdldCAgICAgICA9PiAnI0Fzc2lnbmVkRmllbGRzLWxpbmtvYmplY3QtRkFRJywKICAgICAgICAgICAgICAgIFRhcmdldE9mZnNldCA9PiB7CiAgICAgICAgICAgICAgICAgICAgWCA9PiAxODUsCiAgICAgICAgICAgICAgICAgICAgWSA9PiAxMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFJlbW92ZSBTdGF0ZSBmcm9tIHJpZ2h0IHNpZGUsIGFuZCBwdXQgaXQgdG8gdGhlIGxlZnQgc2lkZS4KICAgICAgICAgICAgJFNlbGVuaXVtLT5EcmFnQW5kRHJvcCgKICAgICAgICAgICAgICAgIEVsZW1lbnQgICAgICA9PiAnI1dpZGdldEZBUSAjQXNzaWduZWRGaWVsZHMtbGlua29iamVjdC1GQVEgbGlbZGF0YS1maWVsZG5hbWU9IlN0YXRlIl0nLAogICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgID0+ICcjQXZhaWxhYmxlRmllbGQtbGlua29iamVjdC1GQVEnLAogICAgICAgICAgICAgICAgVGFyZ2V0T2Zmc2V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBYID0+IDE4NSwKICAgICAgICAgICAgICAgICAgICBZID0+IDEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2F2ZSBuZXcgY29sdW1ucy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjbGlua29iamVjdC1GQVFfc3VibWl0JywgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgICAgICMgV2FpdCBmb3IgQUpBWC4KICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNXaWRnZXRGQVEgLkRhdGFUYWJsZTp2aXNpYmxlIikubGVuZ3RoOycKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yICJ1cGRhdGVkIiB2aXNpYmxlIGNvbHVtbnMgaW4gdGhlIExpbmtlZCBGQVEgd2lkZ2V0LgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDplcSgwKScpLnRleHQoKS50cmltKCk7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICdGQVEjJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDFzdCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDEpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ0FwcHJvdmVkJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDJuZCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDIpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ1RpdGxlJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDNyZCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDMpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgJ1VwZGF0ZWQgNHRoIGNvbHVtbiBuYW1lJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDQpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ1N0YXRlJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDV0aCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE5hdmlnYXRlIHRvIGxpbmsgb2JqZWN0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImRpdltkYXRhLWlkPU1hbmFnZUxpbmtzXSIpLmxlbmd0aDsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3JqUXVlcnlFdmVudEJvdW5kKAogICAgICAgICAgICBDU1NTZWxlY3RvciA9PiAiYVtocmVmPScjTWFuYWdlTGlua3MnXSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiAnZ28gdG8gbGluayBkZWxldGUgc2NyZWVuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCcjTWFuYWdlTGlua3MnICldIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10uQWN0aXZlJykubGVuZ3RoICYmIFwkKCcjRkFRIC5EYXRhVGFibGUgdHIgc3Bhbjpjb250YWlucyhcIiRTaG9ydFRpdGxlXCIpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBsb25nIEZBUSB0aXRsZSBpbiBMaW5rRGVsZXRlIHNjcmVlbi4KICAgICAgICAjIFRoaXMgb25lIGlzIGRpc3BsYXllZCBvbiBob3Zlci4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjRkFRIC5EYXRhVGFibGUgdHIgc3Bhblt0aXRsZT1cIiRMb25nRkFRVGl0bGVcIl0nKS5sZW5ndGg7IiksCiAgICAgICAgICAgICJcInRpdGxlPSRMb25nRkFRVGl0bGVcIiAtIGZvdW5kIGluIExpbmtEZWxldGUgc2NyZWVuIC0gd2hpY2ggaXMgZGlzcGxheWVkIG9uIGhvdmVyIiwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBzaG9ydCB0aWNrZXQgdGl0bGUgaW4gTGlua0RlbGV0ZSBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0ZBUSAuRGF0YVRhYmxlIHRyIHNwYW46Y29udGFpbnMoXCIkU2hvcnRUaXRsZVwiKScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgIiRTaG9ydFRpdGxlIC0gZm91bmQgaW4gTGlua0RlbGV0ZSBzY3JlZW4iLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICIjU2VsZWN0QWxsTGlua3MwIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWxlY3RBbGxMaW5rczAiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNGQVEgLkRhdGFUYWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIikubGVuZ3RoOycgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IHRpY2tldHMuCiAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJEZWxldGUgRkFRIEl0ZW0gLSAkSXRlbUlEIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCmlmICggJFNlbGVuaXVtLT57YnJvd3Nlcl9uYW1lfSBuZSAnZmlyZWZveCcgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAxLAogICAgICAgICdQREYgdGVzdCBjdXJyZW50bHkgc3VwcG9ydHMgRmlyZWZveCBvbmx5JwogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKICAgICAgICBteSAkRkFRQ29tbWVudCAgPSAnU2VsZW5pdW0gQ29tbWVudCc7CgogICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJEZBUUNvbW1lbnQsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRGQVFQcmludCBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVByaW50O0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgd2FpdCB1bnRpbCBwcmludCBzY3JlZW4gaXMgbG9hZGVkCiAgICAgICAgQUNUSVZFU0xFRVA6CiAgICAgICAgZm9yIG15ICRTZWNvbmQgKCAxIC4uIDIwICkgewogICAgICAgICAgICBpZiAoIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRQ29tbWVudCApID4gLTEsICkgewogICAgICAgICAgICAgICAgbGFzdCBBQ1RJVkVTTEVFUDsKICAgICAgICAgICAgfQogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgIH0KCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRQ29tbWVudCwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IGlzIGZvdW5kIG9uIHByaW50IHNjcmVlbiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKCiAgICB9CgopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJEZBUU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwogICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICBteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGdyb3VwLgogICAgICAgIG15ICRHcm91cE5hbWUgPSAiZ3JvdXAtJFJhbmRvbUlEIjsKICAgICAgICBteSAkR3JvdXBJRCAgID0gJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkR3JvdXBOYW1lLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkR3JvdXBJRCwKICAgICAgICAgICAgIkdyb3VwSUQgJEdyb3VwSUQgLSBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIE1vZGlmeSBBZ2VudEZBUUFkZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGNvbmZpZ3VyYXRpb24gdG8gYWxsb3cgb25seSB0ZXN0IGNyZWF0ZWQgZ3JvdXAgYXMgUlcuCiAgICAgICAgIyBUZXN0IGJ1ZyMxNDA2OCBDcmVhdGVCeSBzZWxlY3Rpb24gaG9ub3IgZ3JvdXAgY29uZmlndXJhdGlvbi4KICAgICAgICBteSAlQWdlbnRGQVFBZGRNb2R1bGVDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCcsCiAgICAgICAgICAgIERlZmF1bHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAlQWdlbnRGQVFBZGRNb2R1bGVDb25maWdVcGRhdGUgPSAleyAkQWdlbnRGQVFBZGRNb2R1bGVDb25maWd7RWZmZWN0aXZlVmFsdWV9IH07CiAgICAgICAgJEFnZW50RkFRQWRkTW9kdWxlQ29uZmlnVXBkYXRle0dyb3VwfSA9IFskR3JvdXBOYW1lXTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCcsCiAgICAgICAgICAgIFZhbHVlID0+IFwlQWdlbnRGQVFBZGRNb2R1bGVDb25maWdVcGRhdGUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0NhdGVnb3J5JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGNyZWF0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEdyb3VwSURdLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgRHluYW1pY0ZpZWxkLgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgbXkgJERGVGV4dE5hbWUgICAgICAgICA9ICdUZXh0JyAuICRSYW5kb21JRDsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRERlRleHROYW1lLAogICAgICAgICAgICBMYWJlbCAgICAgID0+ICRERlRleHROYW1lLAogICAgICAgICAgICBGaWVsZE9yZGVyID0+IDk5OTAsCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ1RleHQnLAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmVvcmRlciA9PiAwLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRJRCAkRHluYW1pY0ZpZWxkSUQgaXMgY3JlYXRlZC4iCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgdGVzdCBjcmVhdGVkIER5bmFtaWNGaWVsZAogICAgICAgIG15ICRUZXh0VHlwZUR5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkREZUZXh0TmFtZSwKICAgICAgICApOwogICAgICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIEVuYWJsZSB0ZXN0IGNyZWF0ZWQgRHluYW1pY0ZpZWxkIG9uIEFnZW50RkFRU2VhcmNoIG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6T3ZlcnZpZXdTbWFsbCMjI0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICRERlRleHROYW1lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyLgogICAgICAgIG15ICRUZXN0VXNlciA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgIG15ICRUZXN0VXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlciwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgd2hpY2ggaXMgaW4gZ3JvdXAgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24gYXMgUlcgaW4gQWdlbnRGQVFBZGQuCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJEdyb3VwTmFtZSBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICBteSAkVGVzdFVzZXJMb2dpbklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15IEBGQVFTZWFyY2g7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgRkFRcy4KICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkVGl0bGUgKHF3KCBGQVFTZWFyY2ggRkFRQ2hhbmdlU2VhcmNoICkpIHsKICAgICAgICAgICAgZm9yICggMSAuLiA1ICkgewogICAgICAgICAgICAgICAgbXkgJEZBUVRpdGxlID0gJFRpdGxlIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFRlc3RVc2VyTG9naW5JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAiRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBARkFRU2VhcmNoLCBcJUZBUTsKCiAgICAgICAgICAgICAgICAjIFNldCBEeW5hbWljRmllbGQgdmFsdWUuCiAgICAgICAgICAgICAgICBteSAkREZWYWx1ZSA9ICRDb3VudCAuICdERlZhbHVlJzsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkVGV4dFR5cGVEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRERlZhbHVlLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICJWYWx1ZSAnJERGVmFsdWUnIGlzIHNldCBzdWNjZXNzZnVsbHkgZm9yIEZBUUlEICRJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIExvZ2luIHRlc3QgdXNlci4KICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRU2VhcmNoIGZvcm0uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFTZWFyY2giKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcjU2VhcmNoUHJvZmlsZScpLmxlbmd0aCIgKTsKCiAgICAgICAgIyBDaGVjayB0aWNrZXQgc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaFByb2ZpbGUgU2VhcmNoUHJvZmlsZU5ldyBBdHRyaWJ1dGUgUmVzdWx0Rm9ybSBTZWFyY2hGb3JtU3VibWl0KQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgQWRkIHNlYXJjaCBmaWx0ZXIgYnkgdGl0bGUgYW5kIHJ1biBpdC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnVGl0bGUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAnbmFtZScgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQXR0cmlidXRlJykudmFsKCdDYXRlZ29yeUlEcycpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ2F0ZWdvcnlJRHMnKS52YWwoJyRDYXRlZ29yeUlEJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgQ3JlYXRlZEJ5IGFuZCB2ZXJpZnkgYnVnIzE0MDY4LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnQ3JlYXRlZFVzZXJJRHMnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0NyZWF0ZWRVc2VySURzIG9wdGlvblt2YWx1ZT0kVGVzdFVzZXJMb2dpbklEXScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIiRUZXN0VXNlckxvZ2luSUQgd2hpY2ggaXMgaW4gZ3JvdXAgJEdyb3VwTmFtZSBpcyBmb3VuZCBhcyBwb3NzaWJsZSBzZWxlY3Rpb24iCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0NyZWF0ZWRVc2VySURzIG9wdGlvblt2YWx1ZT0kVGVzdFVzZXJJRF0nKS5sZW5ndGg7IiksCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICIkVGVzdFVzZXIgd2hpY2ggaXMgaW4gbm90IGdyb3VwICRHcm91cE5hbWUgaXMgbm90IGZvdW5kIGFzIHBvc3NpYmxlIHNlbGVjdGlvbiIKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIEFnZW50RkFRU2VhcmNoIHJlc3VsdCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJy4KICAgICAgICAjIEFsbCBGQVFzIHdpbGwgYmUgaW4gYSBzZWFyY2ggcmVzdWx0LgogICAgICAgICRDb3VudCA9IDk7CiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBWZXJpZnkgc29ydGluZyBhbmQgb3JkZXJpbmcgb2YgRkFRcy4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKFwiJENvdW50XCIpIHRkID4gYVtocmVmKj1cIkl0ZW1JRD0kRkFRLT57SXRlbUlEfVwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgaW4gY29ycmVjdCBvcmRlciAtIFNvcnRCeSA9IEZBUUlELCBPcmRlckJ5ID0gRG93bi4iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRDb3VudC0tOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayB0byBzb3J0IGFuZCBvcmRlciBieSBEeW5hbWljRmllbGQgdmFsdWVzLgogICAgICAgICMgU2VlIGJ1ZyMxMjc4MCAoaHR0cHM6Ly9idWdzLm90b2JvLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODApLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ1NvcnRCeT1EeW5hbWljRmllbGRfJERGVGV4dE5hbWUnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZBUSAoQEZBUVNlYXJjaCkgewoKICAgICAgICAgICAgIyBWZXJpZnkgc29ydGluZyBhbmQgb3JkZXJpbmcgb2YgRkFRcy4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKFwiJENvdW50XCIpIHRkID4gYVtocmVmKj1cIkl0ZW1JRD0kRkFRLT57SXRlbUlEfVwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgaW4gY29ycmVjdCBvcmRlciAtIFNvcnRCeSA9IER5bmFtaWNGaWVsZCwgT3JkZXJCeSA9IFVwLiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrICdDaGFuZ2Ugc2VhcmNoIG9wdGlvbnMnIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGQVFTZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNTZWFyY2hQcm9maWxlJykubGVuZ3RoIiApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgICAgICAgICAgICAgJ25hbWUnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJUaXRsZSIsICAgICAgICAgICAgICduYW1lJyApLT5zZW5kX2tleXMoJ0ZBUUNoYW5nZVNlYXJjaConKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIHRlc3QgRkFRcyBzZWFyY2hlZCBieSAnRkFRQ2hhbmdlU2VhcmNoKicuCiAgICAgICAgIyBEZWxldGUgdGVzdCBGQVFzIGFmdGVyIGNoZWNraW5nLgogICAgICAgIGZvciBteSAkRkFRIChARkFRU2VhcmNoKSB7CgogICAgICAgICAgICBpZiAoICRGQVEtPntUeXBlfSBlcSAnRkFRQ2hhbmdlU2VhcmNoJyApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRlc3QgRkFRQ2hhbmdlU2VhcmNoKiBvbiBzY3JlZW4uCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIG5vIHRlc3QgRkFRU2VhcmNoKiBvbiBzY3JlZW4uCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID09IC0xLAogICAgICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IGlzIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEZBUS0+e0l0ZW1JRH0iLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgYnV0dG9uIGFnYWluLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICAgICAgICAnbmFtZScgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgICAgICAgICAgICAgJ25hbWUnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgbm8gZGF0YSBtZXNzYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZVNtYWxsIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdObyBGQVEgZGF0YSBmb3VuZC4nICkgPiAtMSwKICAgICAgICAgICAgIk5vIEZBUSBkYXRhIGZvdW5kLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBjYXRlZ29yeS4KICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGRlbGV0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgRGVsZXRlIGdyb3VwLXVzZXIgcmVsYXRpb24uCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBncm91cF91c2VyIFdIRVJFIGdyb3VwX2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJEdyb3VwSUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkdyb3VwLXVzZXIgcmVsYXRpb24gZm9yIGdyb3VwIElEICRHcm91cElEIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgZ3JvdXAuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBncm91cHMgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkR3JvdXBJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiR3JvdXBJRCAkR3JvdXBJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBEeW5hbWljRmllbGQuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBkeW5hbWljX2ZpZWxkX3ZhbHVlIFdIRVJFIGZpZWxkX2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZElEIF0sCiAgICAgICAgKTsKICAgICAgICAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZERlbGV0ZSgKICAgICAgICAgICAgSUQgICAgID0+ICREeW5hbWljRmllbGRJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRJRCAkRHluYW1pY0ZpZWxkSUQgaXMgZGVsZXRlZC4iLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwogICAgICAgIG15ICRGQVFDb21tZW50ICA9ICdTZWxlbml1bSBDb21tZW50JzsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEuCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBGaWVsZDYgICAgICA9PiAkRkFRQ29tbWVudCwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFab29tIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIENoZWNrIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE1lbnUwMDAtQmFjayBNZW51MDEwLUVkaXQgTWVudTAyMC1IaXN0b3J5IE1lbnUwMzAtUHJpbnQgTWVudTA0MC1MaW5rIE1lbnUwNTAtRGVsZXRlIEZBUUJvZHkgRkFRVm90aW5nKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAgICAgbXkgQEZBUVdpZGdldHMgPSAoJ0ZBUSBJbmZvcm1hdGlvbicpOwoKICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCBmb3IgdGhlIHNpbXBsZSB2aWV3IG1vZGUgaGVyZS4KICAgICAgICBpZiAoICRMaW5rVGFibGVWaWV3TW9kZSBlcSAnU2ltcGxlJyApIHsKICAgICAgICAgICAgcHVzaCBARkFRV2lkZ2V0cywgJ0xpbmtlZCBPYmplY3RzJzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkU291cmNlIChARkFRV2lkZ2V0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkU291cmNlICkgPiAtMSwKICAgICAgICAgICAgICAgICJGQVEgZGF0YSBpcyBmb3VuZCBvbiBzY3JlZW4tICRTb3VyY2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgdGVzdCBGQVEgaXMgY3JlYXRlZC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQxJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDMnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkNicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFDb21tZW50LAogICAgICAgICAgICB9LAoKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICAgICAgICAgIyBTd2l0Y2ggdG8gRkFRIHN5bXB0b20gaWZyYW1lIGFuZCB2ZXJpZnkgaXRzIHZhbHVlcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5Td2l0Y2hUb0ZyYW1lKAogICAgICAgICAgICAgICAgRnJhbWVTZWxlY3RvciA9PiAiIyRUZXN0LT57SWZyYW1lfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFdhaXQgdG8gc3dpdGNoIG9uIGlmcmFtZS4KICAgICAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b19mcmFtZSgpOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgT1RPQk9CdXNpbmVzcyBwYWNrYWdlIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIFNraXAgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KICAgICAgICBteSAkQnVzaW5lc3NJbnN0YWxsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKAogICAgICAgICAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZpbHRlckVsZW1lbnRQb3N0OjpGQVFBZ2VudFJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgICAgIFNpbGVudCA9PiAxCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQnVzaW5lc3NJbnN0YWxsZWQgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICJPVE9CT0J1c2luZXNzIGlzIG5vdCBpbnN0YWxsZWQsIHNraXAgdGhpcyB0ZXN0LiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpTZXJ2aWNlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OlR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUmVsYXRlZEFydGljbGVzIyMjUXVldWVzRW5hYmxlZCcsCiAgICAgICAgKTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUmVsYXRlZEFydGljbGVzIyMjUG9zaXRpb24nLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15ICVDYXRlZ29yeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIEFkZCBGQVEgYXJ0aWNsZXMuCiAgICAgICAgbXkgQEZBUUFydGljbGVzOwogICAgICAgIGZvciBteSAkSXRlbSAocXcoc3ViamVjdCBib2R5KSkgewogICAgICAgICAgICBteSAkVGl0bGUgICA9ICd0aXRsZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICBteSAkS2V5d29yZCA9ICRJdGVtIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJEl0ZW1JRCAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAkS2V5d29yZCwKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICAgICAiRkFRIGFydGljbGUgaXMgY3JlYXRlZCAtICRJdGVtSUQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUZBUTsKICAgICAgICAgICAgJEZBUXtJRH0gICAgICA9ICRJdGVtSUQ7CiAgICAgICAgICAgICRGQVF7S2V5d29yZH0gPSAkS2V5d29yZDsKICAgICAgICAgICAgJEZBUXtUaXRsZX0gICA9ICRUaXRsZSAuICIgKCRDYXRlZ29yeXtOYW1lfSkiOwoKICAgICAgICAgICAgcHVzaCBARkFRQXJ0aWNsZXMsIFwlRkFROwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRUaWNrZXRQaG9uZSIpOwoKICAgICAgICAjIENoZWNrIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAocXcoRnJvbUN1c3RvbWVyIEN1c3RvbWVySUQgRGVzdCBTdWJqZWN0IFJpY2hUZXh0IHN1Ym1pdFJpY2hUZXh0KSkgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgIG15ICRTdWJqZWN0UmFuZG9tID0gIlN1YmplY3QiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkVGV4dFJhbmRvbSAgICA9ICJUZXh0IiAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygkU3ViamVjdFJhbmRvbSk7CgogICAgICAgICMgRGVmaW5lIGEgc2VsZWN0b3IgdG8gc2V0IHRoZSBib2R5LCAodXNlIFJURSBwcmlvciBlbGVtZW50KQogICAgICAgICMgVE9ETzogQ2hlY2sgd2h5IHNlbmRpbmcgdGhlIGtleXMgdG8gdGhlIHByZXZpb3VzIGVsZW1lbnQgd29ya3MuCiAgICAgICAgbXkgJFNlbGVjdG9yID0gaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdTdGFuZGFyZFRlbXBsYXRlSURfU2VhcmNoJyApID4gLTEKICAgICAgICAgICAgPyAnI1N0YW5kYXJkVGVtcGxhdGVJRF9TZWFyY2gnCiAgICAgICAgICAgIDogJyNTdWJqZWN0JzsKCiAgICAgICAgIyBTZXQgYm9keSB0ZXh0IGFuZCBhZGQgYSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgdG8gdHJpZ2dlciB0aGUgQUpBWCByZXF1ZXN0IGZvciB0aGUgcmVsYXRlZCBmYXEgYXJ0aWNsZS4KICAgICAgICBzbGVlcCAxOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIkNLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5zZXREYXRhKCckRkFRQXJ0aWNsZXNbMV0tPntLZXl3b3JkfScpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIENLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5nZXREYXRhKCknICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiICIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoICRGQVFBcnRpY2xlc1sxXS0+e0tleXdvcmR9ICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiXE57VStFMDA0fSIpOwoKICAgICAgICAjIFdhaXQgdGhhdCB0aGUgQUpBWCBsb2FkZXIgaXMgbm8gbG9uZ2VyIHZpc2libGUuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCIjQUpBWExvYWRlckZBUVJlbGF0ZWRBcnRpY2xlcyIpLmlzKCI6dmlzaWJsZSIpOycKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZSBmb3IgdGhlIGluc2VydCB0ZXh0IGluIHRoZSBib2R5LgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW1xAdGl0bGU9JyRGQVFBcnRpY2xlc1sxXS0+e1RpdGxlfSddIiksCiAgICAgICAgICAgICJSZWxhdGVkIEZBUSBhcnRpY2xlIGZvciBib2R5ICckRkFRQXJ0aWNsZXNbMV0tPntLZXl3b3JkfScgaXMgZm91bmQgLSAkRkFRQXJ0aWNsZXNbMV0tPntUaXRsZX0iCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kRkFRQXJ0aWNsZXNbMV0tPntJRH0nKV0iKSwKICAgICAgICAgICAgIkxpbmsgZm9yIHJlbGF0ZWQgRkFRIGFydGljbGUgaXMgZm91bmQgLSAkRkFRQXJ0aWNsZXNbMF0tPntUaXRsZX0iCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBjb3JyZWN0IHBvc2l0aW9uIG9mIHdpZGdldC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLnByZXYoJ2Rpdi5DbGVhcicpLnByZXYoJ2Rpdi5GaWVsZCcpLmZpbmQoJyNTdWJqZWN0JykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ1dpZGdldCBpcyBjb3JyZWN0bHkgcG9zaXRpb25lZCBiZWxvdyBzdWJqZWN0IGZpZWxkLicsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGFuZ2UgdGhlIGJvZHksIHRvIGhhdmUgYSB0ZXh0IHdoaWNoIHNob3VsZCBub3QgcmV0dXJuIHNvbWUgcmVsYXRlZCBmYXEgYXJ0aWNsZS4KICAgICAgICBzbGVlcCAxOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoJ0NLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5zZXREYXRhKCk7Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygnTm90aGluZycpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIiAiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICMgV2FpdCBmb3IgQUpBWCBjYWxsIGFmdGVyIGN1c3RvbWVyIHVzZXIgc2VsZWN0aW9uLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgiI0FKQVhMb2FkZXJGQVFSZWxhdGVkQXJ0aWNsZXMiKS5pcygiOnZpc2libGUiKTsnCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCIjRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgIkZvdW5kIG5vIHdpZGdldCBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGFuZ2UgKyBjaGVjayB3aWRnZXQgcG9zaXRpb24uCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUmVsYXRlZEFydGljbGVzIyMjUG9zaXRpb24nLAogICAgICAgICAgICBWYWx1ZSA9PiAyLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgU2V0IHN1YmplY3QgKyBib2R5IHRleHQuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRTdWJqZWN0UmFuZG9tKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nKTsiKTsKCiAgICAgICAgIyBBZGQgYSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgdG8gdHJpZ2dlciB0aGUgQUpBWCByZXF1ZXN0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIiAiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICMgV2FpdCB0aGF0IHRoZSBBSkFYIGxvYWRlciBpcyBubyBsb25nZXIgdmlzaWJsZS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoIiNBSkFYTG9hZGVyRkFRUmVsYXRlZEFydGljbGVzIikuaXMoIjp2aXNpYmxlIik7JwogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlIGZvciB0aGUgaW5zZXJ0IHRleHQgaW4gdGhlIGJvZHkuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbXEB0aXRsZT0nJEZBUUFydGljbGVzWzFdLT57VGl0bGV9J10iKSwKICAgICAgICAgICAgIlJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIGJvZHkgJyRGQVFBcnRpY2xlc1sxXS0+e0tleXdvcmR9JyBpcyBmb3VuZCAtICRGQVFBcnRpY2xlc1sxXS0+e1RpdGxlfSIKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRGQVFBcnRpY2xlc1sxXS0+e0lEfScpXSIpLAogICAgICAgICAgICAiTGluayBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSBpcyBmb3VuZCAtICRGQVFBcnRpY2xlc1swXS0+e1RpdGxlfSIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLnByZXYoJ2Rpdi5DbGVhcicpLnByZXYoJ2RpdicpLmZpbmQoJyNSaWNoVGV4dCcpLmxlbmd0aDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICdXaWRnZXQgaXMgY29ycmVjdGx5IHBvc2l0aW9uZWQgYmVsb3cgcmljaHRleHQgZmllbGQuJywKICAgICAgICApOwoKICAgICAgICAjIFRlc3QgY2FzZSBmb3IgYnVnIzEyOTAwICggaHR0cHM6Ly9idWdzLm90b2JvLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDAgKS4KICAgICAgICAjIENyZWF0ZSBuZXcgY2F0ZWdvcnkgd2hpY2ggaXMgc3ViY2F0ZWdvcnkgb2YgZGVmYXVsdCAnTWlzYycgY2F0ZWdvcnkuCiAgICAgICAgbXkgJFJhbmRvbUlEICAgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdTdWJDYXRlZ29yeScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTdWJDYXRlZ29yeScsCiAgICAgICAgICAgIFBhcmVudElEID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHR3byBGQVEgYXJ0aWNsZXMgaW4gTWlzYyBhbmQgdGVzdCBjcmVhdGVkIHN1YmNhdGVnb3J5LgogICAgICAgIG15IEBBcnRpY2xlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiTWlzY0FydGljbGUgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiU3ViQ2F0ZWdvcnlBcnRpY2xlICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRLZXl3b3JkID0gIktleXdvcmQkUmFuZG9tSUQiOwogICAgICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZXM7CiAgICAgICAgZm9yIG15ICRUZXN0IChAQXJ0aWNsZXMpIHsKICAgICAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRUZXN0LT57VGl0bGV9LAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJFRlc3QtPntDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICAgICAiRkFRIGFydGljbGUgaW4gY2F0ZWdvcnkgJFRlc3QtPntDYXRlZ29yeUlEfSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQFJlbGF0ZWRGQVFBcnRpY2xlcywgewogICAgICAgICAgICAgICAgSUQgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUZXN0LT57VGl0bGV9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZFJlZnJlc2goKTsKCiAgICAgICAgIyBUeXBlIGluIHN1YmplY3Qga2V5d29yZCB0byBzaG93IHR3byBGQVEgYXJ0aWNsZXMgaW4gd2lkZ2V0IGhpbnQuCiAgICAgICAgIyBPbmUgZnJvbSAnTWlzYycgY2F0ZWdvcnkgYW5kIHNlY29uZCBvbmUgZnJvbSBzdWJjYXRlZ29yeSBvZiAnTWlzYycuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRLZXl3b3JkKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCIjQUpBWExvYWRlckZBUVJlbGF0ZWRBcnRpY2xlcyIpLmlzKCI6dmlzaWJsZSIpJwogICAgICAgICk7CgogICAgICAgIGZvciBteSAkQ2hlY2sgKEBSZWxhdGVkRkFRQXJ0aWNsZXMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAdGl0bGUsICckQ2hlY2stPntUaXRsZX0nKV0iKSwKICAgICAgICAgICAgICAgICJSZWxhdGVkIEZBUSBhcnRpY2xlIGZvciBzdWJqZWN0IGtleXdvcmQgJFJhbmRvbUlEIGlzIGZvdW5kIC0gJENoZWNrLT57VGl0bGV9IgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JENoZWNrLT57SUR9JyldIiksCiAgICAgICAgICAgICAgICAiTGluayBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSBpcyBmb3VuZCAtICRDaGVjay0+e1RpdGxlfSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkRkFRICggQEZBUUFydGljbGVzLCBAUmVsYXRlZEZBUUFydGljbGVzICkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSAkRkFRLT57SUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdWJjYXRlZ29yeS4KICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgSUQgJFN1YkNhdGVnb3J5SUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgZm9yIG15ICRDYWNoZSAocXcoRkFRIEZBUUtleXdvcmRBcnRpY2xlTGlzdCkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkQ2FjaGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU2VhcmNoUGFnZVNob3duJywKICAgICAgICAgICAgVmFsdWUgPT4gJzQwJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0JywKICAgICAgICAgICAgVmFsdWUgPT4gJzIwMCcsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgIyBDcmVhdGUgRkFRIGNhdGVnb3J5LgogICAgICAgIG15ICRDYXRlZ29yeU5hbWUgPSAiQ2F0ZWdvcnlBJFJhbmRvbUlEIjsKICAgICAgICBteSAkQ2F0ZWdvcnlJRCAgID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICRDYXRlZ29yeU5hbWUsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIFNldHVwIGdyb3VwIGZvciBjYXRlZ29yeS4KICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgR2V0ICdleHRlcm5hbCAoY3VzdG9tZXIpJyBzdGF0ZSBJRC4KICAgICAgICBteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICVTdGF0ZXMgPSByZXZlcnNlICVTdGF0ZXM7CgogICAgICAgIG15ICRTdGF0ZUlEID0gJFN0YXRlc3snZXh0ZXJuYWwgKGN1c3RvbWVyKSd9OwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUXMuCiAgICAgICAgbXkgQEl0ZW1zOwogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICJGQVEkQ291bnQtJFJhbmRvbUlEIjsKICAgICAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJGQVFJRCAkSXRlbUlEIGlzIGNyZWF0ZWQgJEZBUVRpdGxlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEl0ZW1zLCB7CiAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgUGFnZSAgICAgPT4gKCAkQ291bnQgPCA0ICkgPyAxIDogMiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBDaGVjayBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBUZXN0IGRhdGEgZm9yIGV4cGxvcmVyIHNjcmVlbi4KICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0ZBUSBFeHBsb3JlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntTY3JlZW5EYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntTY3JlZW5EYXRhfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIG9uIHRlc3QgY3JlYXRlZCBjYXRlZ29yeSwgZ28gdG8gc3ViY2F0ZWdvcnkgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiJENhdGVnb3J5TmFtZSIsICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBPcmRlciBGQVEgaXRlbSBwZXIgRkFRSUQgYnkgRG93bi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO1NvcnRCeT1UaXRsZTtPcmRlcj1VcCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgZm9yIG15ICRUZXN0IChASXRlbXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMzpjb250YWlucyhcIkZBUSBBcnRpY2xlc1wiKScpLmNsb3Nlc3QoJy5XaWRnZXRTaW1wbGUnKS5maW5kKCd0Ym9keSB0cjplcSgkSW5kZXgpIHRkOmVxKDEpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJFRlc3QtPntGQVFUaXRsZX0sCiAgICAgICAgICAgICAgICAiRkFRIEFydGljbGUgJyRUZXN0LT57RkFRVGl0bGV9JyBpcyBmb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEluZGV4Kys7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIEN1c3RvbWVyRkFRRXhwbG9yZXIgc2hvdyBwYWdpbmF0aW9uIGlmIGNvbmZpZ3VyZWQgU2VhcmNoTGltaXQgaXMgcmVhY2hlZCAoc2VlIGJ1ZyMxMzg4NSkuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSA9PiAnMycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICc1JywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO1NvcnRCeT1UaXRsZTtPcmRlcj1VcCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGl0ZW1zIGluIHRoZSBmaXJzdCBwYWdlLgogICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgIG15ICRJc0ZvdW5kID0gKCAkSXRlbS0+e1BhZ2V9ID09IDEgKSA/ICdpcyBmb3VuZCcgOiAnaXMgbm90IGZvdW5kJzsKICAgICAgICAgICAgbXkgJExlbmd0aCAgPSAoICRJdGVtLT57UGFnZX0gPT0gMSApID8gMSAgICAgICAgICA6IDA7CgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2gzOmNvbnRhaW5zKFwiRkFRIEFydGljbGVzXCIpJykuY2xvc2VzdCgnLldpZGdldFNpbXBsZScpLmZpbmQoJ3RkIGFbaHJlZio9XCJBY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kSXRlbS0+e0l0ZW1JRH1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMZW5ndGgsCiAgICAgICAgICAgICAgICAiUGFnZSAxIC0gRkFRIEFydGljbGUgJyRJdGVtLT57RkFRVGl0bGV9JyAkSXNGb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR28gdG8gc2Vjb25kIHJlc3VsdCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0N1c3RvbWVyRkFRRXhwbG9yZXJQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBpdGVtcyBpbiB0aGUgc2Vjb25kIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJdGVtIChASXRlbXMpIHsKICAgICAgICAgICAgbXkgJElzRm91bmQgPSAoICRJdGVtLT57UGFnZX0gPT0gMiApID8gJ2lzIGZvdW5kJyA6ICdpcyBub3QgZm91bmQnOwogICAgICAgICAgICBteSAkTGVuZ3RoICA9ICggJEl0ZW0tPntQYWdlfSA9PSAyICkgPyAxICAgICAgICAgIDogMDsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnaDM6Y29udGFpbnMoXCJGQVEgQXJ0aWNsZXNcIiknKS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykuZmluZCgndGQgYVtocmVmKj1cIkFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSRJdGVtLT57SXRlbUlEfVwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExlbmd0aCwKICAgICAgICAgICAgICAgICJQYWdlIDIgLSBGQVEgQXJ0aWNsZSAnJEl0ZW0tPntGQVFUaXRsZX0nICRJc0ZvdW5kIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBGQVEgc3ViY2F0ZWdvcmllcyBhcmUgc2hvd24gb24gQ3VzdG9tZXJGQVFFeHBsb3Jlci4gU2VlIGJ1ZyMxNDA1My4KICAgICAgICAjIENyZWF0ZSBTdWJjYXRlZ29yeS4KICAgICAgICBteSAkU3ViQ2F0ZWdvcnlOYW1lID0gIlN1YiRDYXRlZ29yeU5hbWUiOwogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEICAgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJFN1YkNhdGVnb3J5TmFtZSwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1N1YmNhdGVnb3J5JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICJTdWJDYXRlZ29yeUlEICRTdWJDYXRlZ29yeUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgU2V0dXAgZ3JvdXAgZm9yIFN1YmNhdGVnb3J5LgogICAgICAgICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCA9PiAndXNlcnMnLAogICAgICAgICk7CiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEdyb3VwSURdLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgU3ViY2F0ZWdvcnkgRkFRLgogICAgICAgIG15ICRTdWJGQVFUaXRsZSA9ICJTdWJGQVEtJFJhbmRvbUlEIjsKICAgICAgICBteSAkU3ViSXRlbUlEICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRTdWJGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+ICRTdGF0ZUlELAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Ykl0ZW1JRCwKICAgICAgICAgICAgIlN1YmNhdGVnb3J5IGl0ZW1JRCAkU3ViSXRlbUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBDaGVjayBpZiBTdWJjYXRlZ29yeSBpcyBzaG93bi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoXCJhW2hyZWYqPSdBY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRTdWJDYXRlZ29yeUlEJ11cIikubGVuZ3RoID09IDAiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJTdWJDYXRlZ29yeUlEICRTdWJDYXRlZ29yeUlEIGluIG5vdCBmb3VuZC4iCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIkQ2F0ZWdvcnlOYW1lIiwgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGlmIFN1YmNhdGVnb3J5IGlzIHByZXNlbnQuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJChcImFbaHJlZio9J0FjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JFN1YkNhdGVnb3J5SUQnXVwiKS50ZXh0KCkudHJpbSgpIgogICAgICAgICAgICApLAogICAgICAgICAgICAiJFN1YkNhdGVnb3J5TmFtZSIsCiAgICAgICAgICAgICJTdWJjYXRlZ29yeSAkU3ViQ2F0ZWdvcnlOYW1lIGlzIGZvdW5kLiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBGQVEgY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEcyAoICRDYXRlZ29yeUlELCAkU3ViQ2F0ZWdvcnlJRCApCiAgICAgICAgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRHMgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSBGQVFzLgogICAgICAgIHB1c2ggQEl0ZW1zLAogICAgICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAkU3ViSXRlbUlELAogICAgICAgICAgICB9OwogICAgICAgIGZvciBteSAkRkFRIChASXRlbXMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVFJRCAkRkFRLT57SXRlbUlEfSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgppZiAoICRTZWxlbml1bS0+e2Jyb3dzZXJfbmFtZX0gbmUgJ2ZpcmVmb3gnICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMSwKICAgICAgICAnUERGIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIEZpcmVmb3ggb25seScKICAgICk7CiAgICByZXR1cm4gMTsKfQoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhbmQgbG9naW4gdGVzdCBjdXN0b21lcgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBDdXN0b21lckZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRUHJpbnQ7SXRlbUlEPSRJdGVtSUQiKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHByaW50IHNjcmVlbiBpcyBsb2FkZWQKICAgICAgICBBQ1RJVkVTTEVFUDoKICAgICAgICBmb3IgbXkgJFNlY29uZCAoIDEgLi4gMjAgKSB7CiAgICAgICAgICAgIGlmICggaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFTb2x1dGlvbiApID4gLTEsICkgewogICAgICAgICAgICAgICAgbGFzdCBBQ1RJVkVTTEVFUDsKICAgICAgICAgICAgfQogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgIH0KCiAgICAgICAgIyB0ZXN0IHBhcmFtcwogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIEZBUSBwcmludCB2YWx1ZXMKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IGlzIGZvdW5kIG9uIHByaW50IHNjcmVlbiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwoKICAgIH0KCik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIERpc2FibGUgY2hlY2sgb2YgZW1haWwgYWRkcmVzc2VzLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdDdXN0b21lckdyb3VwU3VwcG9ydCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEgY2F0ZWdvcnkuCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0NhdGVnb3J5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU2VsZW5pdW0gQ2F0ZWdvcnknLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGNyZWF0ZWQgLSAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGVzdCBncm91cC4KICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKICAgICAgICBteSAkR3JvdXBJRCAgICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICdncm91cCcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ID0+ICdDb21tZW50IGRlc2NyaWJpbmcgdGhlIGdyb3VwJywKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgdGVzdCBGQVEgY2F0ZWdvcnkgcGVybWlzc2lvbi4KICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBHcm91cElEcyAgID0+IFskR3JvdXBJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUXMuCiAgICAgICAgbXkgQEZBUVNlYXJjaDsKICAgICAgICBmb3IgbXkgJFRpdGxlIChxdyggRkFRU2VhcmNoIEZBUUNoYW5nZVNlYXJjaCApKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIDEgLi4gNSApIHsKCiAgICAgICAgICAgICAgICAjIEFkZCB0ZXN0IEZBUS4KICAgICAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICRUaXRsZSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgICAgICBteSAkSXRlbUlEICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSAkSXRlbUlEIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEZBUVNlYXJjaCwgXCVGQVE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSBhbmQgbG9naW4gdGVzdCBjdXN0b21lci4KICAgICAgICBteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJGQVFTZWFyY2ggZm9ybS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWN1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVNlYXJjaCIpOwoKICAgICAgICAjIENoZWNrIHRpY2tldCBzZWFyY2ggcGFnZS4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoUHJvZmlsZSBOdW1iZXIgRnVsbFRleHQgVGl0bGUgS2V5d29yZCBMYW5ndWFnZUlEcyBDYXRlZ29yeUlEcyBOb1ZvdGVTZXQgVm90ZVBvaW50CiAgICAgICAgICAgIFZvdGVTZWFyY2hUeXBlIE5vUmF0ZVNldCBSYXRlUG9pbnQgUmF0ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaCBOb1RpbWVTZXQgRGF0ZSBEYXRlUmFuZ2UKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0IEl0ZW1DcmVhdGVUaW1lUG9pbnQgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhciBJdGVtQ3JlYXRlVGltZVN0b3BNb250aCBJdGVtQ3JlYXRlVGltZVN0b3BEYXkKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhciBTYXZlUHJvZmlsZSBQcm9maWwgU3VibWl0IFJlc3VsdEZvcm0pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggRkFRIGJ5IHRpdGxlIGFuZCBydW4gaXQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIEN1c3RvbWVyRkFRU2VhcmNoIHJlc3VsdCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJycKICAgICAgICAjIFRoZXJlIGFyZSBubyB0ZXN0IEZBUXMsIHVzZXIgZG9lc24ndCBoYXZlIHBlcm1pc3Npb24gZm9yIHRlc3QgY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgbm90IHRlc3QgRkFRIG9uIHNjcmVlbgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB1c2VyIHBlcm1pc3Npb24gZm9yIHRlc3QgZ3JvdXAuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckFkZCgKICAgICAgICAgICAgR0lEICAgICAgICA9PiAkR3JvdXBJRCwKICAgICAgICAgICAgVUlEICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgICAgIHJvICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgbW92ZV9pbnRvID0+IDAsCiAgICAgICAgICAgICAgICBjcmVhdGUgICAgPT4gMCwKICAgICAgICAgICAgICAgIG93bmVyICAgICA9PiAwLAogICAgICAgICAgICAgICAgcHJpb3JpdHkgID0+IDAsCiAgICAgICAgICAgICAgICBydyAgICAgICAgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiR3JvdXBNZW1iZXJBZGQoKSBpcyBkb25lLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPnNlbmRfa2V5cygnRkFRKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249TG9hZFByb2ZpbGUnICldIikKICAgICAgICAgICAgLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICdjc3MnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0NhdGVnb3J5SURzJykudmFsKCckQ2F0ZWdvcnlJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIHRlc3QgRkFRcyBzZWFyY2hlZCBieSAnRkFRQ2hhbmdlU2VhcmNoKicuCiAgICAgICAgIyBEZWxldGUgdGVzdCBGQVFzIGFmdGVyIGNoZWNraW5nLgogICAgICAgIGZvciBteSAkRkFRIChARkFRU2VhcmNoKSB7CgogICAgICAgICAgICBpZiAoICRGQVEtPntUeXBlfSBlcSAnRkFRQ2hhbmdlU2VhcmNoJyApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRlc3QgRkFRQ2hhbmdlU2VhcmNoKiBvbiBzY3JlZW4uCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgbm8gdGVzdCBGQVFTZWFyY2gqIG9uIHNjcmVlbi4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSBJRCAkRkFRLT57SXRlbUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5zZW5kX2tleXMoICRIZWxwZXItPkdldFJhbmRvbUlEKCkgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgbm8gZGF0YSBtZXNzYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZSIsICdjc3MnICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gRkFRIGRhdGEgZm91bmQuJyApID4gLTEsCiAgICAgICAgICAgICJObyBGQVEgZGF0YSBmb3VuZC4iLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEgY2F0ZWdvcnkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGRlbGV0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgRkFRLgogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwoKICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdTZWxlbml1bUtleXdvcmRzJywKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICBGaWVsZDMgICAgICA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIGFuZCBsb2dpbiB0ZXN0IGN1c3RvbWVyLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBDdXN0b21lckZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgQ2hlY2sgcGFnZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdGQVEgSW5mb3JtYXRpb24nICkgPiAtMSwKICAgICAgICAgICAgIkZBUSBkYXRhIGlzIGZvdW5kIG9uIHNjcmVlbiAtIEZBUSBJbmZvcm1hdGlvbiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgdGVzdCBGQVEgaXMgY3JlYXRlZC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQxJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDMnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IGNyZWF0ZWQgRkFRIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICAgICAgICAgIyBTd2l0Y2ggdG8gRkFRIHN5bXB0b20gaWZyYW1lIGFuZCB2ZXJpZnkgaXRzIHZhbHVlcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5Td2l0Y2hUb0ZyYW1lKAogICAgICAgICAgICAgICAgRnJhbWVTZWxlY3RvciA9PiAiIyRUZXN0LT57SWZyYW1lfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFdhaXQgdG8gc3dpdGNoIG9uIGlmcmFtZS4KICAgICAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b19mcmFtZSgpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnU2VsZW5pdW1LZXl3b3JkcycgKSA+IC0xLAogICAgICAgICAgICAiRkFRICdTZWxlbml1bUtleXdvcmRzJyB2YWx1ZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdleHRlcm5hbCAoY3VzdG9tZXIpJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgc3RhdGUgdmFsdWUgaXMgZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnMCBvdXQgb2YgNScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRlZmF1bHQgdm90ZSB2YWx1ZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBWb3RlIDUgc3RhcnMgZm9yIEZBUS4KICAgICAgICBteSAkVm90ZUVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSYXRlQnV0dG9uMTAwIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfY2hpbGRfZWxlbWVudCggJFZvdGVFbGVtZW50LCAiLlJhdGVCdXR0b24iLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcuUmF0ZUJ1dHRvbi5SYXRlQ2hlY2tlZCcpLmxlbmd0aCA9PT0gNSIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAaWQ9J1JhdGVTdWJtaXRCdXR0b24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayB2b3RlIG1lc3NhZ2UuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnVGhhbmtzIGZvciB5b3VyIHZvdGUhJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgdm90ZSBtZXNzYWdlIGlzIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJzUgb3V0IG9mIDUnICkgPiAtMSwKICAgICAgICAgICAgIkZBUSB2b3RlIHZhbHVlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRLgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OlNlcnZpY2UnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6VHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAwLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMjIyNRdWV1ZXNFbmFibGVkJywKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgICAgICMgQWRkIEZBUSBhcnRpY2xlcy4KICAgICAgICBteSBARkFRQXJ0aWNsZXM7CiAgICAgICAgZm9yIG15ICRJdGVtIChxdyhzdWJqZWN0IGJvZHkpKSB7CiAgICAgICAgICAgIG15ICRUaXRsZSAgID0gJ3RpdGxlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRLZXl3b3JkID0gJEl0ZW0gLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICBteSAkSXRlbUlEICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20uLi4nLAogICAgICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJGQVEgYXJ0aWNsZSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFROwogICAgICAgICAgICAkRkFRe0lEfSAgICAgID0gJEl0ZW1JRDsKICAgICAgICAgICAgJEZBUXtLZXl3b3JkfSA9ICRLZXl3b3JkOwogICAgICAgICAgICAkRkFRe1RpdGxlfSAgID0gJFRpdGxlIC4gIiAoJENhdGVnb3J5e05hbWV9KSI7CgogICAgICAgICAgICBwdXNoIEBGQVFBcnRpY2xlcywgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIik7CgogICAgICAgICMgQ2hlY2sgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICBmb3IgbXkgJElEIChxdyhEZXN0IFN1YmplY3QgUmljaFRleHQgUHJpb3JpdHlJRCBzdWJtaXRSaWNoVGV4dCkpIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHVudGlsIFJlbGF0ZWRGQVFBcnRpY2xlcyBib3ggaXMgZGlzcGxheWVkCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNGQVFSZWxhdGVkQXJ0aWNsZXM6dmlzaWJsZSIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJyApID4gLTEsCiAgICAgICAgICAgICJGb3VuZCBpbml0aWFsIG1lc3NhZ2UgZm9yIHJlbGF0ZWQgRkFRIGFydGljbGUiLAogICAgICAgICk7CgogICAgICAgIG15ICRTdWJqZWN0UmFuZG9tID0gIlN1YmplY3QiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkVGV4dFJhbmRvbSAgICA9ICJUZXh0IiAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygkU3ViamVjdFJhbmRvbSk7CgogICAgICAgICMgU2V0IGJvZHkgdGV4dCBhbmQgYWRkIGEgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIHRvIHRyaWdnZXIgdGhlIEFKQVggcmVxdWVzdCBmb3IgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGUuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiBDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuZ2V0RGF0YSgpJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIiAiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICMgV2FpdCB0aGF0IHRoZSBoaW50IGlzIG5vIGxvbmdlciB2aXNpYmxlLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgiI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuSGludCIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgZm9yIGFqYXggY2FsbCBhZnRlciBjdXN0b21lciB1c2VyIHNlbGVjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoInNwYW4uQUpBWExvYWRlcjp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIHRoZSBpbnNlcnQgdGV4dCBpbiB0aGUgYm9keS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtcQHRpdGxlPSckRkFRQXJ0aWNsZXNbMV0tPntUaXRsZX0nXSIpLAogICAgICAgICAgICAiUmVsYXRlZCBGQVEgYXJ0aWNsZSBmb3IgYm9keSAnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nIGlzIGZvdW5kIC0gJEZBUUFydGljbGVzWzFdLT57VGl0bGV9IgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnQWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtJdGVtSUQ9JEZBUUFydGljbGVzWzFdLT57SUR9JyldIiksCiAgICAgICAgICAgICJMaW5rIGZvciByZWxhdGVkIEZBUSBhcnRpY2xlIGlzIGZvdW5kIC0gJEZBUUFydGljbGVzWzBdLT57VGl0bGV9IgogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHRoZSBib2R5LCB0byBoYXZlIGEgdGV4dCB3aGljaCBzaG91bGQgbm90IHJldHVybiBzb21lIHJlbGF0ZWQgZmFxIGFydGljbGUuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCdDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgpOycpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoJ05vdGhpbmcnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCIgIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiXE57VStFMDA0fSIpOwoKICAgICAgICAjIFdhaXQgZm9yIEFKQVggY2FsbCBhZnRlciBjdXN0b21lciB1c2VyIHNlbGVjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoInNwYW4uQUpBWExvYWRlcjp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNGQVFSZWxhdGVkQXJ0aWNsZXMgLkhpbnQiKS5sZW5ndGgnCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0LicgKSA+IC0xLAogICAgICAgICAgICAiRm91bmQgbWVzc2FnZSBmb3Igbm8gcmVsYXRlZCBGQVEgYXJ0aWNsZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBUZXN0IGNhc2UgZm9yIGJ1ZyMxMjkwMCAoIGh0dHBzOi8vYnVncy5vdG9iby5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTAwICkuCiAgICAgICAgIyBDcmVhdGUgbmV3IGNhdGVnb3J5IHdoaWNoIGlzIHN1YmNhdGVnb3J5IG9mIGRlZmF1bHQgJ01pc2MnIGNhdGVnb3J5LgogICAgICAgIG15ICRSYW5kb21JRCAgICAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgICAgICBOYW1lICAgICA9PiAnU3ViQ2F0ZWdvcnknIC4gJFJhbmRvbUlELAogICAgICAgICAgICBDb21tZW50ICA9PiAnU3ViQ2F0ZWdvcnknLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAxLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICd1c2VycycsCiAgICAgICAgKTsKICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICBHcm91cElEcyAgID0+IFskR3JvdXBJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0d28gRkFRIGFydGljbGVzIGluIE1pc2MgYW5kIHRlc3QgY3JlYXRlZCBzdWJjYXRlZ29yeS4KICAgICAgICBteSBAQXJ0aWNsZXMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gIk1pc2NBcnRpY2xlICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gIlN1YkNhdGVnb3J5QXJ0aWNsZSAkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkS2V5d29yZCA9ICJLZXl3b3JkICRSYW5kb21JRCI7CiAgICAgICAgbXkgQFJlbGF0ZWRGQVFBcnRpY2xlczsKICAgICAgICBmb3IgbXkgJFRlc3QgKEBBcnRpY2xlcykgewogICAgICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJFRlc3QtPntUaXRsZX0sCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAkVGVzdC0+e0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMywKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAkS2V5d29yZCwKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJGQVEgYXJ0aWNsZSBpbiBjYXRlZ29yeSAkVGVzdC0+e0NhdGVnb3J5SUR9IGlzIGNyZWF0ZWQgLSAkSXRlbUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAUmVsYXRlZEZBUUFydGljbGVzLCB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRlc3QtPntUaXRsZX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwoKICAgICAgICAjIFR5cGUgaW4gc3ViamVjdCBrZXl3b3JkIHRvIHNob3cgdHdvIEZBUSBhcnRpY2xlcyBpbiB0aGUgc2lkZSB3aWRnZXQgaGludC4KICAgICAgICAjIE9uZSBmcm9tICdNaXNjJyBjYXRlZ29yeSBhbmQgc2Vjb25kIG9uZSBmcm9tIHN1YmNhdGVnb3J5IG9mICdNaXNjJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRLZXl3b3JkKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgic3Bhbi5BSkFYTG9hZGVyOnZpc2libGUiKS5sZW5ndGgnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCIuRkFRTWluaUxpc3QgYTp2aXNpYmxlIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICBteSAkQ291bnQgPSBzY2FsYXIgQFJlbGF0ZWRGQVFBcnRpY2xlczsKICAgICAgICBmb3IgbXkgJENoZWNrIChAUmVsYXRlZEZBUUFydGljbGVzKSB7CiAgICAgICAgICAgICRDb3VudC0tOwogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5GQVFNaW5pTGlzdCBhOmVxKCRDb3VudCknKS50ZXh0KCkudHJpbSgpOyIpLAogICAgICAgICAgICAgICAgJENoZWNrLT57VGl0bGV9LAogICAgICAgICAgICAgICAgIlJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIHN1YmplY3Qga2V5d29yZCAkUmFuZG9tSUQgaXMgZm91bmQgLSAkQ2hlY2stPntUaXRsZX0iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnQWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtJdGVtSUQ9JENoZWNrLT57SUR9JyldIiksCiAgICAgICAgICAgICAgICAiTGluayBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSBpcyBmb3VuZCAtICRDaGVjay0+e1RpdGxlfSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkRkFRICggQEZBUUFydGljbGVzLCBAUmVsYXRlZEZBUUFydGljbGVzICkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSAkRkFRLT57SUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdWJjYXRlZ29yeS4KICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgSUQgJFN1YkNhdGVnb3J5SUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDYWNoZSAocXcoRkFRIEZBUUtleXdvcmRBcnRpY2xlTGlzdCkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkQ2FjaGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBteSBASXRlbUlEczsKICAgICAgICBmb3IgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgSXRlbUlEICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEl0ZW1JRHMsIFwlRkFROwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3JlciIpOwoKICAgICAgICAjIGNoZWNrIFB1YmxpY0ZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGhlYWQgdHIgdGgiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGJvZHkgdHIgdGQiLCAnY3NzJyApOwoKICAgICAgICAjIHRlc3QgZGF0YSBmb3IgZXhwbG9yZXIgc2NyZWVuCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTY3JlZW5EYXRhID0+ICdGQVEgRXhwbG9yZXInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTY3JlZW5EYXRhID0+ICdMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTY3JlZW5EYXRhID0+ICdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57U2NyZWVuRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57U2NyZWVuRGF0YX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNsaWNrIG9uICdNaXNjJywgZ28gb24gc3ViY2F0ZWdvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdNaXNjJywgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIG9yZGVyIEZBUSBpdGVtIHBlciBGQVFJRCBieSBEb3duCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPTE7U29ydEJ5PUZBUUlEO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFuZCBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUXMKICAgICAgICBmb3IgbXkgJEZBUSAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJEZBUS0+e0ZBUVRpdGxlfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgppZiAoICRTZWxlbml1bS0+e2Jyb3dzZXJfbmFtZX0gbmUgJ2ZpcmVmb3gnICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMSwKICAgICAgICAnUERGIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIEZpcmVmb3ggb25seScKICAgICk7CiAgICByZXR1cm4gMTsKfQoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFQcmludDtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIHdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZAogICAgICAgIEFDVElWRVNMRUVQOgogICAgICAgIGZvciBteSAkU2Vjb25kICggMSAuLiAyMCApIHsKICAgICAgICAgICAgaWYgKCBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVNvbHV0aW9uICkgPiAtMSwgKSB7CiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgRkFRIHByaW50IHZhbHVlcwogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gLSBmb3VuZCBvbiBwcmludCBzY3JlZW4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBQdWJsaWNGQVFSU1MgY3JlYXRlZCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmdldCgiJHtTY3JpcHRBbGlhc31wdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPUNyZWF0ZWQiKTsKCiAgICAgICAgIyB2ZXJpZnkgRkFRUlNTIGNyZWF0ZWQgc2NyZWVuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknICkgPiAtMSwKICAgICAgICAgICAgIkZBUVJTUyBjcmVhdGVkIHRpdGxlIGZvdW5kIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiApID4gLTEsCiAgICAgICAgICAgICJGQVEgbGluayAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUVJTUyBjaGFuZ2VkIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9Q2hhbmdlZCIpOwoKICAgICAgICAjIHZlcmlmeSBGQVFSU1MgY2hhbmdlZCBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJyApID4gLTEsCiAgICAgICAgICAgICJGQVFSU1MgY2hhbmdlZCB0aXRsZSBmb3VuZCAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiApID4gLTEsCiAgICAgICAgICAgICJGQVEgbGluayAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBteSBARkFRU2VhcmNoOwogICAgICAgIGZvciBteSAkVGl0bGUgKHF3KCBGQVFTZWFyY2ggRkFRQ2hhbmdlU2VhcmNoICkpIHsKCiAgICAgICAgICAgICMgYWRkIHRlc3QgRkFRCiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICRUaXRsZSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgSXRlbUlEICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEZBUVNlYXJjaCwgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRU2VhcmNoIGZvcm0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRU2VhcmNoIik7CgogICAgICAgICMgY2hlY2sgdGlja2V0IHNlYXJjaCBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE51bWJlciBGdWxsVGV4dCBUaXRsZSBLZXl3b3JkIExhbmd1YWdlSURzIENhdGVnb3J5SURzIE5vVm90ZVNldCBWb3RlUG9pbnQKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgTm9SYXRlU2V0IFJhdGVQb2ludCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoIE5vVGltZVNldCBEYXRlIERhdGVSYW5nZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQgSXRlbUNyZWF0ZVRpbWVQb2ludCBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyIEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoIEl0ZW1DcmVhdGVUaW1lU3RvcERheQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyIFN1Ym1pdCBSZXN1bHRGb3JtKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIEZBUSBieSB0aXRsZSBhbmQgcnVuIGl0CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIFB1YmxpY0ZBUVNlYXJjaCByZXN1bHQgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgY2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJwogICAgICAgICMgYWxsIEZBUXMgd2lsbCBiZSBpbiBhIHNlYXJjaCByZXN1bHQKICAgICAgICBmb3IgbXkgJEZBUSAoQEZBUVNlYXJjaCkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyB0ZXN0IEZBUSBvbiBzY3JlZW4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwncHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFTZWFyY2gnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBjaGVjayB0ZXN0IEZBUXMgc2VhcmNoZWQgYnkgJ0ZBUUNoYW5nZVNlYXJjaConCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgIGlmICggJEZBUS0+e1R5cGV9IGVxICdGQVFDaGFuZ2VTZWFyY2gnICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVFDaGFuZ2VTZWFyY2gqIG9uIHNjcmVlbgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IC0gZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHRlc3QgRkFRU2VhcmNoKiBvbiBzY3JlZW4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBub3QgZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCAkSGVscGVyLT5HZXRSYW5kb21JRCgpICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIG5vIGRhdGEgbWVzc2FnZQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZSIsICdjc3MnICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gRkFRIGRhdGEgZm91bmQuJyApID4gLTEsCiAgICAgICAgICAgICJObyBGQVEgZGF0YSBmb3VuZC4iLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzCiAgICAgICAgZm9yIG15ICREZWxldGUgKEBGQVFTZWFyY2gpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJERlbGV0ZS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICREZWxldGUtPntGQVFUaXRsZX0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnU2VsZW5pdW1LZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRWm9vbSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0ZBUSBJbmZvcm1hdGlvbicgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRhdGEgaXMgZm91bmQgb24gc2NyZWVuIC0gRkFRIEluZm9ybWF0aW9uIiwKICAgICAgICApOwoKICAgICAgICAjIHZlcmlmeSB0ZXN0IEZBUSBpcyBjcmVhdGVkCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQxJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDMnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0ZXN0IGNyZWF0ZWQgRkFRIHZhbHVlcwogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgICAgICAgICAjIHN3aXRjaCB0byBGQVEgc3ltcHRvbSBpZnJhbWUgYW5kIHZlcmlmeSBpdHMgdmFsdWVzCiAgICAgICAgICAgICRTZWxlbml1bS0+U3dpdGNoVG9GcmFtZSgKICAgICAgICAgICAgICAgIEZyYW1lU2VsZWN0b3IgPT4gIiMkVGVzdC0+e0lmcmFtZX0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBXYWl0IHRvIHN3aXRjaCBvbiBpZnJhbWUuCiAgICAgICAgICAgIHNsZWVwIDI7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b19mcmFtZSgpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnU2VsZW5pdW1LZXl3b3JkcycgKSA+IC0xLAogICAgICAgICAgICAiRkFRICdTZWxlbml1bUtleXdvcmRzJyB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ3B1YmxpYyAoYWxsKScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIHN0YXRlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnMCBvdXQgb2YgNScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRlZmF1bHQgdm90ZSB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQoKKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBTZXQgRkFRIGRhc2hib2FyZCBTeXNDb25maWcgcGFyYW0uCiAgICAgICAgbXkgQEZBUURhc2hib2FyZCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzAzOTgtRkFRLUxhc3RDaGFuZ2UnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgRkFRIGRhc2hib2FyZCBtb2R1bGVzIG9uIGRlZmF1bHQgc2V0dGluZ3MuCiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgICAgICBmb3IgbXkgJERlZmF1bHRTeXNDb25maWcgKEBGQVFEYXNoYm9hcmQpIHsKCiAgICAgICAgICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJERlZmF1bHRTeXNDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREZWZhdWx0U3lzQ29uZmlnLT57VmFsdWV9ID0gJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9OwoKICAgICAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkRGVmYXVsdFN5c0NvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJERlZmF1bHRTeXNDb25maWctPntWYWx1ZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwogICAgICAgIG15ICRGQVFUaXRsZSAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgICAgIG15ICRTY3JpcHRBbGlhcyAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgIGZvciBteSAkVGVzdCAoQEZBUURhc2hib2FyZCkgewoKICAgICAgICAgICAgIyBEaXNhYmxlIGFsbCBkYXNoYm9hcmQgcGx1Zy1pbnMuCiAgICAgICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Rhc2hib2FyZEJhY2tlbmQnKTsKICAgICAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRGFzaGJvYXJkQmFja2VuZCcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJSRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEVuYWJsZSBGQVEgZGFzaGJvYXJkLgogICAgICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgICAgIEtleSAgID0+ICRUZXN0LT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+e1ZhbHVlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgTmF2aWdhdGUgdG8gZGFzaGJvYXJkIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnREYXNoYm9hcmQiKTsKCiAgICAgICAgICAgICMgQ2hlY2sgdGl0bGUgZm9yIHRlc3QgY3JlYXRlZCBGQVEuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgdGl0bGUgaXMgZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDaGVjayBsaW5rIGZvciB0ZXN0IGNyZWF0ZWQgRkFRLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiApID4gLTEsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgbGluayBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRLgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRSm91cm5hbCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUpvdXJuYWwiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgSm91cm5hbCBPdmVydmlldyBjb2x1bW5zCiAgICAgICAgZm9yIG15ICRDb2x1bW5zICggJ0ZBUSMnLCAnVGl0bGUnLCAnQ2F0ZWdvcnknLCAnQWN0aW9uJywgJ1RpbWUnICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29sdW1ucyApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29sdW1uICRDb2x1bW5zIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkRkFRVGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIGNyZWF0ZSBtZW51IG1vZHVsZSB0ZXN0IHBhcmFtcwogICAgICAgIG15IEBNZW51TW9kdWxlID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIkVkaXQiLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICJBZ2VudEZBUUVkaXQ7SXRlbUlEPSRJdGVtSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIkhpc3RvcnkiLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICJBZ2VudEZBUUhpc3Rvcnk7SXRlbUlEPSRJdGVtSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIlByaW50IiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAiQWdlbnRGQVFQcmludDtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAiTGluayIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gIkFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFRIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICJEZWxldGUiLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICJBZ2VudEZBUURlbGV0ZTtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBGQVEgbWVudSBtb2R1bGVzCiAgICAgICAgZm9yIG15ICRGQVFab29tTWVudU1vZHVsZSAoQE1lbnVNb2R1bGUpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249JEZBUVpvb21NZW51TW9kdWxlLT57QWN0aW9ufScgKV0iKSwKICAgICAgICAgICAgICAgICJGQVEgbWVudSAkRkFRWm9vbU1lbnVNb2R1bGUtPntOYW1lfSBpcyBmb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUSBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NlbGVuaXVtIENhdGVnb3J5JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMiwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgaXMgY3JlYXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0ZXN0IEZBUSBjYXRlZ29yeSBwZXJtaXNzaW9uCiAgICAgICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICd1c2VycycsCiAgICAgICAgKTsKCiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEdyb3VwSURdLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRGQVFFeHBsb3JlciBzY3JlZW4gZm9yIHRlc3QgRkFRIGNhdGVnb3J5CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO05hdj0iKTsKCiAgICAgICAgIyBjaGVjayBvdmVydmlldyBzY3JlZW4KICAgICAgICBmb3IgbXkgJENvbHVtbnMgKCAnRkFRIycsICdUaXRsZScsICdMYW5ndWFnZScsICdTdGF0ZScsICdWYWxpZGl0eScgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb2x1bW5zICkgPiAtMSwKICAgICAgICAgICAgICAgICJDb2x1bW4gJENvbHVtbnMgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRGQVFUaXRsZSIgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRIGNhdGVnb3J5CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ2F0ZWdvcnkgaXMgZGVsZXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgYWN0aXZhdGUgcXVpY2stc2VhcmNoIHNob3cgZm9yIGFnZW50IGludGVyZmFjZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycsCiAgICAgICAgICAgIFZhbHVlID0+IHsgJ2ludGVybmFsJyA9PiAnaW50ZXJuYWwgKGFnZW50KScgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgJ0FkdmFuY2VkIFNlYXJjaCcgYnV0dG9uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO05hdj0iICkgPiAtMSwKICAgICAgICAgICAgIkFkdmFuY2VkIFNlYXJjaCBidXR0b24gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgc2VhcmNoIHRlc3QgY3JlYXRlZCBGQVEgaW4gcXVpY2stc2VhcmNoCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU2VhcmNoJ10iKS0+c2VuZF9rZXlzKCRGQVFUaXRsZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1NlYXJjaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIGZvciBxdWljay1zZWFyY2ggcmVzdWx0CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgYWN0aXZhdGUgcXVpY2stc2VhcmNoIHNob3cgZm9yIGFnZW50IGludGVyZmFjZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycsCiAgICAgICAgICAgIFZhbHVlID0+IHsgJ2V4dGVybmFsJyA9PiAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgYW5kIGxvZ2luIHRlc3QgY3VzdG9tZXIKICAgICAgICBteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQ3VzdG9tZXJGQVFFeHBsb3JlciBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgJ0FkdmFuY2VkIFNlYXJjaCcgYnV0dG9uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoIiApID4gLTEsCiAgICAgICAgICAgICJBZHZhbmNlZCBTZWFyY2ggYnV0dG9uIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIHNlYXJjaCB0ZXN0IGNyZWF0ZWQgRkFRIGluIHF1aWNrLXNlYXJjaAogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NlYXJjaCddIiktPnNlbmRfa2V5cygkRkFRVGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTZWFyY2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBjaGVjayBmb3IgcXVpY2stc2VhcmNoIHJlc3VsdAogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRGQVFUaXRsZSIgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gcHVibGljIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsPyIpOwoKICAgICAgICAjIGNoZWNrIGZvciAnQWR2YW5jZWQgU2VhcmNoJyBidXR0b24KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJBY3Rpb249UHVibGljRkFRU2VhcmNoOyIgKSA+IC0xLAogICAgICAgICAgICAiQWR2YW5jZWQgU2VhcmNoIGJ1dHRvbiBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZWFyY2ggdGVzdCBjcmVhdGVkIEZBUSBpbiBxdWljay1zZWFyY2gKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdTZWFyY2gnXSIpLT5zZW5kX2tleXMoJEZBUVRpdGxlKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU2VhcmNoJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgY2hlY2sgZm9yIHF1aWNrLXNlYXJjaCByZXN1bHQKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkRkFRVGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHR3byB0ZXN0IEZBUS4KICAgICAgICBteSBASXRlbUlEczsKICAgICAgICBteSBARkFRVGl0bGVzOwogICAgICAgIGZvciBteSAkRkFRICggMSAuLiAyICkgewogICAgICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICBteSAkSXRlbUlEICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBASXRlbUlEcywgICAkSXRlbUlEOwogICAgICAgICAgICBwdXNoIEBGQVFUaXRsZXMsICRGQVFUaXRsZTsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGxpbmsgb2JqZWN0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJpbnB1dFtuYW1lPVwnU0VBUkNIOjpUaXRsZVwnXSIpLmxlbmd0aCAmJiAkKCJidXR0b25bdHlwZT1zdWJtaXRdIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIExpbmsgdHdvIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nU0VBUkNIOjpUaXRsZSddIiktPnNlbmRfa2V5cyggJEZBUVRpdGxlc1sxXSApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTZWFyY2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNMaW5rVGFyZ2V0S2V5cyIsCiAgICAgICAgICAgIEV2ZW50ICAgICAgID0+ICdjbGljaycsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3JqUXVlcnlFdmVudEJvdW5kKAogICAgICAgICAgICBDU1NTZWxlY3RvciA9PiAiI0xpbmtUYXJnZXRLZXlzIiwKICAgICAgICAgICAgRXZlbnQgICAgICAgPT4gJ2NoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua1RhcmdldEtleXMiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNMaW5rVGFyZ2V0S2V5czpjaGVja2VkIikubGVuZ3RoOycgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNBZGRMaW5rcyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjQWRkTGlua3MiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFab29tIG9mIGNyZWF0ZWQgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGVzWzFdICkgPiAtMSwKICAgICAgICAgICAgIlRlc3QgdGlja2V0IHRpdGxlICRGQVFUaXRsZXNbMV0gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gbGluayBvYmplY3Qgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFRO1NvdXJjZUtleT0kSXRlbUlEc1swXSIpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiZGl2W2RhdGEtaWQ9TWFuYWdlTGlua3NdIikubGVuZ3RoOycKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICJhW2hyZWY9JyNNYW5hZ2VMaW5rcyddIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBsaW5rIHJlbGF0aW9uLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJyNNYW5hZ2VMaW5rcycgKV0iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10uQWN0aXZlIikubGVuZ3RoOycgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNTZWxlY3RBbGxMaW5rczAiLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlbGVjdEFsbExpbmtzMCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiI0ZBUSAuRGF0YVRhYmxlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQiKS5sZW5ndGg7JyApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIEZBUS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRJdGVtSURzWzBdIik7CgogICAgICAgICMgVmVyaWZ5IHRoYXQgbGluayBoYXMgYmVlbiByZW1vdmVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlc1sxXSApID09IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlc1sxXSBpcyBub3QgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgQ29uZmlybWF0aW9uRGlhbG9nLgogKi8KRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIERpYWxvZ0RhdGEKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAgKiBAdmFyaWFibGUKICAgICAqIEBwcml2YXRlCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyB2YXJpYWJsZSBzdG9yZXMgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcGFzc2VkIGZyb20gdGhlIERUTCBhbmQgY29udGFpbiBhbGwgdGhlIGRhdGEgdGhhdCB0aGUgZGlhbG9nIG5lZWRzLgogICAgICovCiAgICB2YXIgRGlhbG9nRGF0YSA9IFtdOwoKICAgIC8qKgogICAgICogQG5hbWUgU2hvd1dhaXRpbmdEaWFsb2cKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gUG9zaXRpb25Ub3AgcG9zaXRpb24gb2YgdGhlIGRpYWxvZy4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZyhQb3NpdGlvblRvcCl7CiAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJzxkaXYgY2xhc3M9IlNwYWNpbmcgQ2VudGVyIj48c3BhbiBjbGFzcz0iQUpBWExvYWRlciIgdGl0bGU9IicgKyBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSArICciPjwvc3Bhbj48L2Rpdj4nLCAnJywgUG9zaXRpb25Ub3AsICdDZW50ZXInLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIFNob3dDb25maXJtYXRpb25EaWFsb2cKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEByZXR1cm5zIHtCb29sZWFufSBmYWxzZQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gc2hvd3MgYSBjb25maXJtYXRpb24gZGlhbG9nIHdpdGggMiBidXR0b25zOiBZZXMgYW5kIE5vLgogICAgICovCiAgICBUYXJnZXROUy5TaG93Q29uZmlybWF0aW9uRGlhbG9nID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgTG9jYWxEaWFsb2dEYXRhLAogICAgICAgICAgICBQb3NpdGlvblRvcCwKICAgICAgICAgICAgRGF0YSwKICAgICAgICAgICAgQnV0dG9uczsKCiAgICAgICAgLy8gZ2V0IGdsb2JhbCBzYXZlZCBEaWFsb2dEYXRhIGZvciB0aGlzIGZ1bmN0aW9uCiAgICAgICAgTG9jYWxEaWFsb2dEYXRhID0gRGlhbG9nRGF0YVskKHRoaXMpLmF0dHIoJ2lkJyldOwoKICAgICAgICAvLyBkZWZpbmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cKICAgICAgICBQb3NpdGlvblRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSArICgkKHdpbmRvdykuaGVpZ2h0KCkgKiAwLjMpOwoKICAgICAgICAvLyBzaG93IHdhaXRpbmcgZGlhbG9nCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coUG9zaXRpb25Ub3ApOwoKICAgICAgICAvLyBhamF4IGNhbGwgdG8gdGhlIG1vZHVsZSB0aGF0IGRlbGV0ZXMgdGhlIHRlbXBsYXRlCiAgICAgICAgRGF0YSA9IExvY2FsRGlhbG9nRGF0YS5EaWFsb2dDb250ZW50UXVlcnlTdHJpbmc7CiAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksIERhdGEsIGZ1bmN0aW9uIChSZXNwb25zZSkgewoKICAgICAgICAgICAgLy8gJ0NvbmZpcm1hdGlvbicgb3BlbnMgYSBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8KICAgICAgICAgICAgaWYgKFJlc3BvbnNlLkRpYWxvZ1R5cGUgPT09ICdDb25maXJtYXRpb24nKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmaW5lIHllcyBhbmQgbm8gYnV0dG9ucwogICAgICAgICAgICAgICAgQnV0dG9ucyA9IFt7CiAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdZZXMnKSwKICAgICAgICAgICAgICAgICAgICBDbGFzczogIlByaW1hcnkiLAoKICAgICAgICAgICAgICAgICAgICAvLyBkZWZpbmUgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlICdZZXMnIGJ1dHRvbiBpcyBwcmVzc2VkCiAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uKCl7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIFllcyBhbmQgTm8gYnV0dG9ucyB0byBwcmV2ZW50IG11bHRpcGxlIHN1Ym1pdHMKICAgICAgICAgICAgICAgICAgICAgICAgJCgnZGl2LkRpYWxvZzp2aXNpYmxlIGRpdi5Db250ZW50Rm9vdGVyIGJ1dHRvbicpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgbW9kdWxlIHRoYXQgZG9lcyB0aGUgY29uZmlybWVkIGFjdGlvbiBhZnRlciBwcmVzc2luZyB0aGUgWWVzIGJ1dHRvbgogICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgTG9jYWxEaWFsb2dEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ05vJyksCiAgICAgICAgICAgICAgICAgICAgVHlwZTogIkNsb3NlIgogICAgICAgICAgICAgICAgfV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vICdNZXNzYWdlJyBvcGVucyBhIGRpYWxvZyB3aXRoIDEgYnV0dG9uOiBPawogICAgICAgICAgICBlbHNlIGlmIChSZXNwb25zZS5EaWFsb2dUeXBlID09PSAnTWVzc2FnZScpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZpbmUgT2sgYnV0dG9uCiAgICAgICAgICAgICAgICBCdXR0b25zID0gW3sKICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ09rJyksCiAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICJQcmltYXJ5IiwKICAgICAgICAgICAgICAgICAgICBUeXBlOiAiQ2xvc2UiCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2hvdyB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB0byBjb25maXJtIHRoZSBhY3Rpb24KICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coUmVzcG9uc2UuSFRNTCwgTG9jYWxEaWFsb2dEYXRhLkRpYWxvZ1RpdGxlLCBQb3NpdGlvblRvcCwgIkNlbnRlciIsIHRydWUsIEJ1dHRvbnMpOwogICAgICAgIH0sICdqc29uJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuSW5pdAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGF0YSAtIFRoZSBkYXRhIHRoYXQgc2hvdWxkIGJlIGJpbmRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gYmluZHMgYSBjbGljayBldmVudCB0byB0aGUgZGVmaW5lZCBlbGVtZW50CiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIElELAogICAgICAgIEZBUURhdGEgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUURhdGEnKTsKCiAgICAgICAgLy8gQmluZGluZyBhIGNsaWNrIGV2ZW50IHRvIHRoZSBkZWZpbmVkIGVsZW1lbnQuCiAgICAgICAgaWYgKHR5cGVvZiBGQVFEYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBmb3IgKElEIGluIEZBUURhdGEpIHsKICAgICAgICAgICAgICAgIERpYWxvZ0RhdGFbRkFRRGF0YVtJRF0uRWxlbWVudElEXSA9IEZBUURhdGFbSURdOwogICAgICAgICAgICAgICAgJChGQVFEYXRhW0lEXS5FbGVtZW50U2VsZWN0b3IpLm9uKCdjbGljaycsIFRhcmdldE5TLlNob3dDb25maXJtYXRpb25EaWFsb2cpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cgfHwge30pKTsK
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5GQVEKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgRkFRLgogKi8KRkFRLkFnZW50LkZBUSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuRkFRCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemUgdGhlIEZBUSBtb2R1bGUuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgRkFRU2VhcmNoUHJvZmlsZSA9IENvcmUuQ29uZmlnLkdldCgnRkFRU2VhcmNoUHJvZmlsZScpOwoKICAgICAgICAvLyBQcmV2ZW50IHRvbyBmYXN0IHN1Ym1pdGlvbnMgdGhhdCBjb3VsZCBsZWFkIGludG8gbm8gY2hhbmdlcyBzZW50IHRvIHNlcnZlciwKICAgICAgICAvLyBkdWUgdG8gUlRFIHRvIHRleHRhcmVhIGRhdGEgdHJhbnNmZXIKICAgICAgICAkKCcjRkFRU3VibWl0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAkKCcjRkFRU3VibWl0JykuY2xvc2VzdCgnZm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICB9LCAyNTApOwogICAgICAgIH0pOwoKICAgICAgICAkKCcjQWdlbnRGQVFTZWFyY2gnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coJ0FnZW50RkFRU2VhcmNoJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKEZBUVNlYXJjaFByb2ZpbGUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICQoJyNGQVFTZWFyY2gnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBDb3JlLkFnZW50LlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKENvcmUuQ29uZmlnLkdldCgnQWN0aW9uJyksIEZBUVNlYXJjaFByb2ZpbGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgICQoJyNTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKCQoJyNDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXInKSwgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlNldHRpbmdzIiksICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU3VibWl0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6ICdTdWJtaXQnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICBpZiAoQ29yZS5Db25maWcuR2V0KCdBZ2VudEZBUVNlYXJjaCcpID09PSAxKSB7CiAgICAgICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coQ29yZS5Db25maWcuR2V0KCdBY3Rpb24nKSwgRkFRU2VhcmNoUHJvZmlsZSk7CiAgICAgICAgfQogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5GQVEgfHwge30pKTsK
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5UaWNrZXRab29tCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIFRpY2tldFpvb20uCiAqLwpGQVEuQWdlbnQuRkFRWm9vbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIElmcmFtZUF1dG9IZWlnaHQKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuRkFRWm9vbQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSAtIFRoZSBpZnJhbWUgd2hpY2ggc2hvdWxkIGJlIGF1dG8taGVpZ2h0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTZXQgaWZyYW1lIGhlaWdodCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHJlYWwgY29udGVudCBoZWlnaHQgYW5kIGRlZmF1bHQgY29uZmlnIHNldHRpbmcuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIHZhciBOZXdIZWlnaHQ7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICAvLyBzbGlnaHRseSBjaGFuZ2UgdGhlIHdpZHRoIG9mIHRoZSBpZnJhbWUgdG8gbm90IGJlIGV4YWN0bHkgMTAwJSB3aWR0aCBhbnltb3JlCiAgICAgICAgICAgIC8vIHRoaXMgcHJldmVudHMgYSBkb3VibGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgKGZyb20gaWZyYW1lIGFuZCBzdXJyb3VuZGluZyBkaXYpCiAgICAgICAgICAgICRJZnJhbWUud2lkdGgoJElmcmFtZS53aWR0aCgpIC0gMik7CgogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwoKICAgICAgICAgICAgLy8gaWYgdGhlIGlGcmFtZXMgaGVpZ2h0IGlzIDAsIHdlIGNvbGxhcHNlIHRoZSB3aWRnZXQKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA9PT0gMCkgewogICAgICAgICAgICAgICAgJElmcmFtZS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykucmVtb3ZlQ2xhc3MoJ0V4cGFuZGVkJykuYWRkQ2xhc3MoJ0NvbGxhcHNlZCcpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCFOZXdIZWlnaHQgfHwgaXNOYU4oTmV3SGVpZ2h0KSkgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4JykpIHsKICAgICAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiAwKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBwYXJzZUludChOZXdIZWlnaHQsIDEwKSArIDI1OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgRkFRLkFnZW50LkZBUVpvb20KICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZSB0aGUgRkFRWm9vbSBtb2R1bGUuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gaW5pdCBicm93c2VyIGxpbmsgbWVzc2FnZSBjbG9zZSBidXR0b24KICAgICAgICBpZiAoJCgnLkZBUU1lc3NhZ2VCcm93c2VyJykubGVuZ3RoKSB7CiAgICAgICAgICAgICQoJy5GQVFNZXNzYWdlQnJvd3NlciBhLkNsb3NlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyJykuZmFkZU91dCgic2xvdyIpOwogICAgICAgICAgICAgICAgQ29yZS5BZ2VudC5QcmVmZXJlbmNlc1VwZGF0ZSgnVXNlckFnZW50RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlJywgMSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgICAgICQoJ3VsLkFjdGlvbnMgYS5Bc1BvcHVwJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDb3JlLlVJLlBvcHVwLk9wZW5Qb3B1cCAoJCh0aGlzKS5hdHRyKCdocmVmJyksICdBY3Rpb24nKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuUmF0ZUJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFJhdGVOdW1iZXIgPSBwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoJ2xpJykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgICQoJyNSYXRlVmFsdWUnKS52YWwoUmF0ZU51bWJlcik7CiAgICAgICAgICAgICQoJyNSYXRlU3VibWl0QnV0dG9uJykuZmFkZUluKDI1MCk7CiAgICAgICAgICAgICQoJyNGQVFWb3RpbmcnKS5maW5kKCcuUmF0ZUJ1dHRvbicpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgSXRlbVJhdGVOdW1iZXIgPSBwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoJ2xpJykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlcikgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBDcmVhdGUgZXZlbnRzIGZvciBBZ2VudEZBUVpvb21TbWFsbCBzY3JlZW4uCiAgICAgICAgaWYgKHBhcnNlSW50KENvcmUuQ29uZmlnLkdldCgnQWdlbnRGQVFab29tU21hbGwnKSwgMTApID09PSAxKSB7CgogICAgICAgICAgICAkKCcjQ2FuY2VsJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjSW5zZXJ0VGV4dCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBJbnNlcnRUZXh0ID0gMSwKICAgICAgICAgICAgICAgICAgICBJbnNlcnRMaW5rID0gMDsKCiAgICAgICAgICAgICAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRUZXh0KEluc2VydFRleHQsIEluc2VydExpbmspOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJyNJbnNlcnRMaW5rJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIEluc2VydFRleHQgPSAwLAogICAgICAgICAgICAgICAgICAgIEluc2VydExpbmsgPSAxOwoKICAgICAgICAgICAgICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldFRleHQoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0luc2VydFRleHRBbmRMaW5rJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIEluc2VydFRleHQgPSAxLAogICAgICAgICAgICAgICAgICAgIEluc2VydExpbmsgPSAxOwoKICAgICAgICAgICAgICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldFRleHQoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0luc2VydEZ1bGwnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgICAgICAgICAgICAgSW5zZXJ0TGluayA9IDA7CgogICAgICAgICAgICAgICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0RnVsbEZBUShJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjSW5zZXJ0RnVsbEFuZExpbmsnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgICAgICAgICAgICAgSW5zZXJ0TGluayA9IDE7CgogICAgICAgICAgICAgICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0RnVsbEZBUShJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyBJbml0aWFsaXplIGFsbG9jYXRpb24gbGlzdCBmb3IgbGluayBvYmplY3QgdGFibGUuCiAgICAgICAgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuU2V0QWxsb2NhdGlvbkxpc3QoKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQWdlbnQuRkFRWm9vbSB8fCB7fSkpOwo=
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5SZWxhdGVkQXJ0aWNsZXMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgRkFRLgogKi8KRkFRLkFnZW50LlJlbGF0ZWRBcnRpY2xlcyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuUmVsYXRlZEFydGljbGVzCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemUgdGhlIEZBUSBtb2R1bGUgKGZ1bmN0aW9uYWxpdHkgZm9yIHJlbGF0ZWQgYXJ0aWNsZXMpLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIFdpZGdldFBvc2l0aW9uID0gQ29yZS5Db25maWcuR2V0KCdBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlc1Bvc2l0aW9uJyksCiAgICAgICAgICAgIFF1ZXVlc0VuYWJsZWQgID0gQ29yZS5Db25maWcuR2V0KCdBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlc1F1ZXVlcycpLAogICAgICAgICAgICBMYXN0RGF0YSwKICAgICAgICAgICAgTGFzdFJlc3BvbnNlLAogICAgICAgICAgICBTbGlkZUR1cmF0aW9uICA9IDQwMCwKICAgICAgICAgICAgSGVscFRleHQgICAgICAgPSBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnVGhpcyBtaWdodCBiZSBoZWxwZnVsJyksCiAgICAgICAgICAgICRXaWRnZXQgICAgICAgID0gJCgnPGxhYmVsIGlkPSJGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCIgZm9yPSJGQVFSZWxhdGVkQXJ0aWNsZXMiPicgKyBIZWxwVGV4dCArICc6PC9sYWJlbD48ZGl2IGlkPSJGQVFSZWxhdGVkQXJ0aWNsZXMiIGNsYXNzPSJGaWVsZCIgc3R5bGU9Im1pbi1oZWlnaHQ6IDBweDsiPjwvZGl2PjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4nKSwKICAgICAgICAgICAgJEFKQVhMb2FkZXIgICAgPSAkKCc8c3BhbiBpZD0iQUpBWExvYWRlckZBUVJlbGF0ZWRBcnRpY2xlcyIgY2xhc3M9IkFKQVhMb2FkZXIiPjwvc3Bhbj4nKTsKCiAgICAgICAgLy8gV2lkZ2V0IHBvc2l0aW9uIGJlbG93IHN1YmplY3QuCiAgICAgICAgaWYgKFdpZGdldFBvc2l0aW9uID09IDEpIHsKCiAgICAgICAgICAgICQoJyNTdWJqZWN0JykKICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgLm5leHQoKQogICAgICAgICAgICAgICAgLmFmdGVyKCRXaWRnZXQpOwogICAgICAgIH0KICAgICAgICAvLyBXaWRnZXQgcG9zaXRpb24gYmVsb3cgdGV4dC4KICAgICAgICBlbHNlIGlmIChXaWRnZXRQb3NpdGlvbiA9PSAyKSB7CgogICAgICAgICAgICAkKCcjUmljaFRleHQnKQogICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAubmV4dCgpCiAgICAgICAgICAgICAgICAuYWZ0ZXIoJFdpZGdldCk7CiAgICAgICAgfQoKICAgICAgICAvLyBIaWRlIHRoZSB3aWRnZXQgYnkgZGVmYXVsdC4KICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzTGFiZWwnKS5oaWRlKCk7CiAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmhpZGUoKTsKCiAgICAgICAgLy8gQ3JlYXRlIGFuZCBoaWRlIEFKQVhMb2FkZXIuCiAgICAgICAgJCgnI1N1YmplY3QnKS5hZnRlcigkQUpBWExvYWRlcik7CiAgICAgICAgJEFKQVhMb2FkZXIuaGlkZSgpOwoKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0V2ZW50LlVJLlJpY2hUZXh0RWRpdG9yLkluc3RhbmNlUmVhZHknLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICQoJyNEZXN0Jykub24oJ2NoYW5nZS5SZWxhdGVkRkFRQXJ0aWNsZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBTZWxlY3RlZFF1ZXVlID0gJCh0aGlzKS52YWwoKSwKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFF1ZXVlTmFtZSA9IFNlbGVjdGVkUXVldWUucmVwbGFjZSgvXGQqXHxcfC0/LywgJycpOwoKICAgICAgICAgICAgICAgIGlmICgoIVF1ZXVlc0VuYWJsZWQubGVuZ3RoIHx8ICFTZWxlY3RlZFF1ZXVlTmFtZSB8fCAkLmluQXJyYXkoU2VsZWN0ZWRRdWV1ZU5hbWUsIFF1ZXVlc0VuYWJsZWQpID4gLTEpKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgkKCcjU3ViamVjdCcpLnZhbCgpIHx8IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICghU2VsZWN0ZWRRdWV1ZU5hbWUgfHwgKFF1ZXVlc0VuYWJsZWQubGVuZ3RoICYmICQuaW5BcnJheShTZWxlY3RlZFF1ZXVlTmFtZSwgUXVldWVzRW5hYmxlZCkgPT0gLTEpKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaHRtbCgpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIGxhYmVsICsgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLmhpZGUoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5zbGlkZVVwKFNsaWRlRHVyYXRpb24sIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZW1wdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3BhZGRpbmctdG9wJywgJzBweCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy1ib3R0b20nLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjU3ViamVjdCcpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgU2VsZWN0ZWRRdWV1ZSA9ICQoJyNEZXN0JykudmFsKCksCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRRdWV1ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgRGF0YTsKCiAgICAgICAgICAgICAgICBpZiAoU2VsZWN0ZWRRdWV1ZSkgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkUXVldWVOYW1lID0gU2VsZWN0ZWRRdWV1ZS5yZXBsYWNlKC9cZCpcfFx8LT8vLCAnJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFRdWV1ZXNFbmFibGVkLmxlbmd0aCB8fCAhU2VsZWN0ZWRRdWV1ZU5hbWUgfHwgJC5pbkFycmF5KFNlbGVjdGVkUXVldWVOYW1lLCBRdWV1ZXNFbmFibGVkKSA+IC0xKSB7CgogICAgICAgICAgICAgICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RkFRUmVsYXRlZEFydGljbGVzJywKICAgICAgICAgICAgICAgICAgICAgICAgU3ViamVjdDogJCgnI1N1YmplY3QnKS52YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgQm9keTogQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLmdldERhdGEoKQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGlmICghTGFzdERhdGEgfHwgTGFzdERhdGEuU3ViamVjdCAhPSBEYXRhLlN1YmplY3QgfHwgTGFzdERhdGEuQm9keSAhPSBEYXRhLkJvZHkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBSkFYTG9hZGVyLnNob3coKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcjU3ViamVjdCcpLmRhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS5kYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKS5hYm9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS5yZW1vdmVEYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS5kYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInLCBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEFtb3VudE9sZEVsZW1lbnRzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbW91bnROZXdFbGVtZW50cyA9IDA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS5yZW1vdmVEYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgbGFzdCBkYXRhIHRvIGV4ZWN1dGUgdGhlIGFqYXggcmVxdWVzdCBvbmx5IGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3REYXRhID0gRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmxlbmd0aCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVzcG9uc2UgJiYgUmVzcG9uc2UuU3VjY2VzcykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBjaGFuZ2UgdGhlIGNvbnRlbnQsIGlmIHdlIGdvdCBuZXcgY29udGVudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFMYXN0UmVzcG9uc2UgfHwgTGFzdFJlc3BvbnNlICE9IFJlc3BvbnNlLkFnZW50UmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBwcmV2aW91cyBmb3VuZCBGQVEgYXJ0aWNsZXMsIGRvIG5vdCBzdGFydCB3aXRoIHBhZ2UgZmxpY2tlcmluZy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluc3RlYWQgd2UgYXJlIGdvaW5nIHRvIHJlcGxhY2Ugb25seSB0aGUgdGFibGUgdmVyeSBzbW9vdGhseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaHRtbCgpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFtb3VudE9sZEVsZW1lbnRzID0gJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSB0cicpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbW91bnROZXdFbGVtZW50cyA9ICQoUmVzcG9uc2UuQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nKS5maW5kKCd0cicpLmxlbmd0aDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSB1c2Ugc2xpZGUgZWZmZWN0LCBpZiBpdCBpcyByZWFsbHkgbmVlZGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBbW91bnRPbGRFbGVtZW50cyAhPSBBbW91bnROZXdFbGVtZW50cykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLnNsaWRlVXAoU2xpZGVEdXJhdGlvbiwgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmh0bWwoUmVzcG9uc2UuQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3BhZGRpbmctdG9wJywgJzNweCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy1ib3R0b20nLCAnM3B4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2xpZGVEb3duKFNsaWRlRHVyYXRpb24pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZW1wdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmh0bWwoUmVzcG9uc2UuQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy10b3AnLCAnM3B4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3BhZGRpbmctYm90dG9tJywgJzNweCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmh0bWwoUmVzcG9uc2UuQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCdwYWRkaW5nLXRvcCcsICczcHgnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCdwYWRkaW5nLWJvdHRvbScsICczcHgnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2xpZGVEb3duKFNsaWRlRHVyYXRpb24sIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzTGFiZWwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciBsYXN0IGh0bWwgc3RyaW5nIGZyb20gcmVzcG9uc2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3RSZXNwb25zZSA9IFJlc3BvbnNlLkFnZW50UmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIGxhYmVsICsgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLmhpZGUoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5zbGlkZVVwKFNsaWRlRHVyYXRpb24sIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZW1wdHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3BhZGRpbmctdG9wJywgJzBweCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy1ib3R0b20nLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgbGFzdCBodG1sIHN0cmluZyAoZW1wdHkpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXN0UmVzcG9uc2UgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBjbGFzcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQUpBWExvYWRlci5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI1N1YmplY3QnKS5vbigncGFzdGUga2V5ZG93bicsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICAgICAgdmFyIFZhbHVlID0gJCgnI1N1YmplY3QnKS52YWwoKTsKCiAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QsIGlmIHNwYWNlIG9yIGVudGVyIHdhcyBwcmVzc2VkCiAgICAgICAgICAgICAgICBpZiAoKEV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyAmJiAoRXZlbnQud2hpY2ggPT0gMzIgfHwgRXZlbnQud2hpY2ggPT0gMTMpICYmIChWYWx1ZS5sZW5ndGggPiAxMCB8fCBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpKSkgfHwgRXZlbnQudHlwZSAhPT0gJ2tleWRvd24nKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUaGUgImNoYW5nZSIgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgYSBjaGFuZ2UgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oJ2tleScsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdCwgaWYgc3BhY2Ugb3IgZW50ZXIgd2FzIHByZXNzZWQKICAgICAgICAgICAgICAgIGlmIChFdmVudC5kYXRhLmtleUNvZGUgPT0gMzIgfHwgRXZlbnQuZGF0YS5rZXlDb2RlID09IDEzKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUaGUgInBhc3RlIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIHBhc3RlIGlzIG1hZGUgaW4gdGhlIGVkaXRvci4KICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLm9uKCdwYXN0ZScsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QKICAgICAgICAgICAgICAgICQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gVGhlICJibHVyIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIGJsdXIgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oJ2JsdXInLCBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBvbmx5IHRoZSBjaGFuZ2UgZXZlbnQgZm9yIHRoZSBzdWJqZWN0CiAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIFRyaWdnZXIgdGhlICdSZWxhdGVkRkFRQXJ0aWNsZScgY2hhbmdlIGV2ZW50IHRvIGhpZGUvc2hvdyB0aGUgcmVsYXRlZCBmYXEgYXJ0aWNsZSB3aWRnZXQgZm9yIHRoZSBjYXNlCiAgICAgICAgICAgIC8vICB0aGF0IHRoZSBxdWV1ZSBpcyBhbHJlYWR5IHNlbGVjdGVkIGF0IHRoZSBwYWdlIGxvYWQgb3Igc2hvdyB0aGUgd2lkZ2V0IGFsd2F5cyBpZiB0aGUgcXVldWUgc2VsZWN0aW9uIGlzIGRpc2FibGVkLgogICAgICAgICAgICBpZiAoISQoJyNEZXN0JykubGVuZ3RoKSB7CgogICAgICAgICAgICAgICAgaWYgKCQoJyNTdWJqZWN0JykudmFsKCkgfHwgQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLmdldERhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkKCcjRGVzdCcpLnRyaWdnZXIoJ2NoYW5nZS5SZWxhdGVkRkFRQXJ0aWNsZScpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LlJlbGF0ZWRBcnRpY2xlcyB8fCB7fSkpOwo=
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5BZ2VudCA9IEZBUS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIFRpY2tldENvbXBvc2UuCiAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXRGQVFUaWNrZXRDb21wb3NlCiAgICAgKiBAbWVtYmVyb2YgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRFbGVtZW50IFRoZSBlZGl0b3IKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplIHRoZSBuZWVkZWQgc3R1ZmYgZm9yIHRoZSBGQVEgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGlja2V0IHNjcmVlbnMuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXRGQVFUaWNrZXRDb21wb3NlID0gZnVuY3Rpb24gKCRFbGVtZW50KSB7CgogICAgICAgIC8vIFNlZSBidWcjOTExNjoKICAgICAgICAvLyBJbiBDaHJvbWUgc29tZXRpbWVzIHRoZSBjbGljayBldmVudCBpcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBmb2N1cyBldmVudAogICAgICAgIC8vIHdlIHByZXZlbnQgdGhhdCBieSBjaGVja2luZyBFZGl0b3JHb3RGb2N1cyBmaXJzdAogICAgICAgIHZhciBJbnN0YW5jZU5hbWUgPSAkRWxlbWVudC5hdHRyKCdpZCcpLAogICAgICAgICAgICBFZGl0b3JHb3RGb2N1cyA9IGZhbHNlOwoKICAgICAgICBmdW5jdGlvbiBHZXRDdXJzb3JQb3NpdGlvbigpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnQgPSAkRWxlbWVudFswXSwKICAgICAgICAgICAgICAgIFJhbmdlLAogICAgICAgICAgICAgICAgVGV4dFJhbmdlLAogICAgICAgICAgICAgICAgVGV4dFJhbmdlRHVwbGljYXRlLAogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IDA7CiAgICAgICAgICAgIC8vIEZpcmVmb3gKICAgICAgICAgICAgaWYgKEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgIFN0YXJ0UmFuZ2UgPSBFbGVtZW50LnNlbGVjdGlvblN0YXJ0OwogICAgICAgICAgICAgICAgRW5kUmFuZ2UgPSBFbGVtZW50LnNlbGVjdGlvbkVuZDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBJRQogICAgICAgICAgICBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UgPSBFbGVtZW50LmNyZWF0ZVRleHRSYW5nZSgpOwogICAgICAgICAgICAgICAgVGV4dFJhbmdlRHVwbGljYXRlID0gVGV4dFJhbmdlLmR1cGxpY2F0ZSgpOwogICAgICAgICAgICAgICAgVGV4dFJhbmdlLm1vdmVUb0Jvb2ttYXJrKFJhbmdlLmdldEJvb2ttYXJrKCkpOwogICAgICAgICAgICAgICAgVGV4dFJhbmdlRHVwbGljYXRlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgVGV4dFJhbmdlKTsKICAgICAgICAgICAgICAgIFN0YXJ0UmFuZ2UgPSBFbmRSYW5nZSA9IFRleHRSYW5nZUR1cGxpY2F0ZS50ZXh0Lmxlbmd0aDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU2F2ZSBjdXJzb3IgcG9zaXRpb24gZm9yIGxhdGVyIHVzYWdlCiAgICAgICAgICAgICRFbGVtZW50LmRhdGEoJ0N1cnNvcicsIHsKICAgICAgICAgICAgICAgIFN0YXJ0UmFuZ2U6IFN0YXJ0UmFuZ2UsCiAgICAgICAgICAgICAgICBFbmRSYW5nZTogRW5kUmFuZ2UKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZWdpc3RlciBSVEUgZXZlbnRzIGZvciBzYXZpbmcgdGhlIGN1cnNvciBwb3NpdGlvbgogICAgICAgIGlmICh0eXBlb2YgQ0tFRElUT1IgIT09ICd1bmRlZmluZWQnICYmIENLRURJVE9SICYmIENLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dCkgewogICAgICAgICAgICAvLyBHZXQgbGFzdCBjdXJzb3IgcG9zaXRpb24gYW5kIHNhdmUgaXQgKG9uIGZvY3VzIHdlIGNvbWUgYmFjayB0byB0aGlzIHBvc2l0aW9uKQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignY29udGVudERvbScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3JHb3RGb2N1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQub24oJ2tleXVwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3JHb3RGb2N1cykgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIG5lZWRlZCBmb3IgY2xpZW50LXNpZGUgdmFsaWRhdGlvbiBhbmQgaW5zZXJ0aW5nIGRhdGEgaW50byBSVEUKICAgICAgICAgICAgQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gaWYgYSBzYXZlZCBjdXJzb3IgcG9zaXRpb24gZXhpc3RzLCBzZXQgdGhpcyBwb3NpdGlvbiBub3cKICAgICAgICAgICAgICAgIHZhciBSVEVDdXJzb3JSYW5nZSA9ICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InKSwKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb247CgogICAgICAgICAgICAgICAgRWRpdG9yR290Rm9jdXMgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChSVEVDdXJzb3JSYW5nZSkgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbiA9IG5ldyBDS0VESVRPUi5kb20uc2VsZWN0aW9uKENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLmRvY3VtZW50KTsKICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb24uc2VsZWN0UmFuZ2VzKFJURUN1cnNvclJhbmdlKTsKICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uICh0byBub3Qga2VlcCBvbGQgc3R1ZmYpCiAgICAgICAgICAgICAgICAgICAgJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAvLyBSZWdpc3RlciBldmVudHMgZm9yIHNhdmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJykuYmluZCgnY2xpY2suRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJykuYmluZCgna2V5dXAuRkFRQ29tcG9zaW5nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgR2V0Q3Vyc29yUG9zaXRpb24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFNldERhdGEKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRkFRVGl0bGUgb2YgYSBGQVEgYXJ0aWNsZSB0byBiZSByZXR1cm5lZCBpbnRvIHRpY2tldCBTdWJqZWN0CiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRkFRQ29udGVudCBvZiBhIEZBUSBhcnRpY2xlIGFuZC9vciBMaW5rIHRvIHRoZSBwdWJsaWMgaW50ZXJmYWNlIGluIHBsYWluIHRleHQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGQVFIVE1MQ29udGVudCBvZiBhIEZBUSBhcnRpY2xlIGFuZC9vciBMaW5rIHRvIHRoZSBwdWJsaWMgaW50ZXJmYWNlIGluIEhUTUwKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBEbyBub3RoaW5nIGFuZCBzaG93IGFuIGVycm9yIG1lc3NhZ2UuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNldERhdGEgKEZBUVRpdGxlLCBGQVFDb250ZW50LCBGQVFIVE1MQ29udGVudCkgewoKICAgICAgICB2YXIgJFBhcmVudFN1YmplY3QgPSAkKCcjU3ViamVjdCcsIHBhcmVudC5kb2N1bWVudCksCiAgICAgICAgICAgICRQYXJlbnRCb2R5ID0gJCgnI1JpY2hUZXh0JywgcGFyZW50LmRvY3VtZW50KSwKICAgICAgICAgICAgUGFyZW50Qm9keSA9ICRQYXJlbnRCb2R5WzBdLAogICAgICAgICAgICBQYXJlbnRCb2R5VmFsdWUgPSAkUGFyZW50Qm9keS52YWwoKSwKICAgICAgICAgICAgUmFuZ2UsCiAgICAgICAgICAgIFN0YXJ0UmFuZ2UgPSAwLAogICAgICAgICAgICBFbmRSYW5nZSA9IDAsCiAgICAgICAgICAgIE5ld1Bvc2l0aW9uID0gMDsKCiAgICAgICAgaWYgKCQoJyNTdWJqZWN0JywgcGFyZW50LmRvY3VtZW50KS5sZW5ndGggJiYgJCgnI1JpY2hUZXh0JywgcGFyZW50LmRvY3VtZW50KS5sZW5ndGgpIHsKCiAgICAgICAgICAgIGlmIChDb3JlLkNvbmZpZy5HZXQoJ1RpY2tldENvbXBvc2UuVXBkYXRlQXJ0aWNsZVN1YmplY3QnKSA9PT0gJzEnICYmICQoJyNVcGRhdGVBcnRpY2xlU3ViamVjdE9wdGlvbicpLnByb3AoJ2NoZWNrZWQnKSkgewogICAgICAgICAgICAgICAgLy8gY29weSBzdWJqZWN0CiAgICAgICAgICAgICAgICBpZiAoJFBhcmVudFN1YmplY3QudmFsKCkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmVudFN1YmplY3QudmFsKEZBUVRpdGxlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRQYXJlbnRTdWJqZWN0LnZhbCgkUGFyZW50U3ViamVjdC52YWwoKSArICcgLSAnICsgRkFRVGl0bGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhZGQgRkFRIHRleHQgYW5kL29yIGxpbmsgdG8gV1lTSVdZRyBlZGl0b3IgaW4gcGFyZW50IHdpbmRvdwogICAgICAgICAgICBpZiAocGFyZW50LkNLRURJVE9SICYmIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQpIHsKICAgICAgICAgICAgICAgIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuZm9jdXMoKTsKICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJbiBzb21lIGNpcmN1bXN0YW5jZXMsIHRoaXMgY29tbWFuZCB0aHJvd3MgYW4gZXJyb3IgKGFsdGhvdWdoIGluc2VydGluZyB0aGUgSFRNTCB3b3JrcykKICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBpbnRlbmRlZCBmdW5jdGlvbmFsaXR5IGFsc28gd29ya3MsIHdlIGp1c3Qgd3JhcCBpdCBpbiBhIHRyeS1jYXRjaC1zdGF0ZW1lbnQKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0Lmluc2VydEh0bWwoRkFRSFRNTENvbnRlbnQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjYXRjaCAoRXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJC5ub29wKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CiAgICAgICAgICAgICAgICB9LCAxMDApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpbnNlcnQgYm9keSBhbmQvb3IgbGluayB0byB0ZXh0YXJlYSAoaWYgcG9zc2libGUgdG8gY3Vyc29yIHBvc2l0aW9uIG90aGVyd2lzZSB0byB0aGUgdG9wKQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIEdldCBwcmV2aW91c2x5IHNhdmVkIGN1cnNvciBwb3NpdGlvbiBvZiB0ZXh0YXJlYQogICAgICAgICAgICAgICAgaWYgKHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpKSB7CiAgICAgICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpLlN0YXJ0UmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgRW5kUmFuZ2UgPSBwYXJlbnQuJCgnI1JpY2hUZXh0JywgcGFyZW50LmRvY3VtZW50KS5kYXRhKCdDdXJzb3InKS5FbmRSYW5nZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IHRleHQgdG8gdGV4dGFyZWEKICAgICAgICAgICAgICAgICRQYXJlbnRCb2R5LnZhbChQYXJlbnRCb2R5VmFsdWUuc3Vic3RyKDAsIFN0YXJ0UmFuZ2UpICsgRkFRQ29udGVudCArIFBhcmVudEJvZHlWYWx1ZS5zdWJzdHIoRW5kUmFuZ2UsIFBhcmVudEJvZHlWYWx1ZS5sZW5ndGgpKTsKICAgICAgICAgICAgICAgIE5ld1Bvc2l0aW9uID0gU3RhcnRSYW5nZSArIEZBUUNvbnRlbnQubGVuZ3RoOwoKICAgICAgICAgICAgICAgIC8vIEp1bXAgdG8gbmV3IGN1cnNvciBwb3NpdGlvbiAoYWZ0ZXIgaW5zZXJ0ZWQgdGV4dCkKICAgICAgICAgICAgICAgIGlmIChQYXJlbnRCb2R5LnNlbGVjdGlvblN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgUGFyZW50Qm9keS5zZWxlY3Rpb25TdGFydCA9IE5ld1Bvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgIFBhcmVudEJvZHkuc2VsZWN0aW9uRW5kID0gTmV3UG9zaXRpb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICBSYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpOwogICAgICAgICAgICAgICAgICAgIFJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgTmV3UG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgIFJhbmdlLnNlbGVjdCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHBhcmVudC5Db3JlLlVJLkRpYWxvZy5DbG9zZURpYWxvZygkKCcuRGlhbG9nJywgcGFyZW50LmRvY3VtZW50KSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGFsZXJ0KCckSlNUZXh0eyJUaGlzIHdpbmRvdyBtdXN0IGJlIGNhbGxlZCBmcm9tIGNvbXBvc2Ugd2luZG93In0nKTsKICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIFNldFRleHQKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IEluc2VydFRleHQgdG8gYWRkIEZBUSBpdGVtIHRleHQgb3Igbm90CiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IEluc2VydExpbmsgdG8gYWRkIEZBUSBpdGVtIGxpbmsgb3Igbm90CiAgICAgKi8KICAgIFRhcmdldE5TLlNldFRleHQgPSBmdW5jdGlvbiAoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluaykgewogICAgICAgIHZhciBGQVFUaXRsZSA9ICQoJyNGQVFUaXRsZScpLnZhbCgpLAogICAgICAgIEZBUUNvbnRlbnQgPSAnJywKICAgICAgICBGQVFIVE1MQ29udGVudCA9ICcnLAogICAgICAgIEZBUUxpbms7CgogICAgICAgIGlmIChJbnNlcnRUZXh0ID09PSAxKSB7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSAkKCcjRkFRQm9keScpLnZhbCgpOwogICAgICAgICAgICBGQVFIVE1MQ29udGVudCA9IEZBUUNvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBGQVFDb250ZW50ID0gJyc7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRQ29udGVudDsKICAgICAgICB9CgogICAgICAgIGlmIChJbnNlcnRMaW5rID09PSAxKSB7CiAgICAgICAgICAgIEZBUUxpbmsgPSAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpOwogICAgICAgICAgICBGQVFDb250ZW50ID0gRkFRQ29udGVudCArICdcbicgKyBGQVFMaW5rOwogICAgICAgICAgICBGQVFIVE1MQ29udGVudCA9IEZBUUhUTUxDb250ZW50ICsgJzxici8+JyArICc8YSBocmVmPSInICsgRkFRTGluayArICciPicgKyBGQVFUaXRsZSArICc8L2E+JzsKICAgICAgICB9CgogICAgICAgIFNldERhdGEoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKICAgIH07CgoKICAgIC8qKgogICAgICogQG5hbWUgU2V0RnVsbEZBUQogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gSW5zZXJ0VGV4dCB0byBhZGQgRkFRIGl0ZW0gdGV4dCBvciBub3QKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gSW5zZXJ0TGluayB0byBhZGQgRkFRIGl0ZW0gbGluayBvciBub3QKICAgICAqLwogICAgVGFyZ2V0TlMuU2V0RnVsbEZBUSA9IGZ1bmN0aW9uIChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKSB7CgogICAgICAgIC8vIGdldCB0aGUgRkFRIHJpY2h0ZXh0IGFuZCB0cmlnZ2VyIGF0dGFjaG1lbnQgcHJvY2Vzc2luZwogICAgICAgIHBhcmVudC5Db3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBwYXJlbnQuQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb246ICdBZ2VudEZBUVJpY2hUZXh0JywKICAgICAgICAgICAgICAgIEl0ZW1JRDogJCgnaW5wdXRbbmFtZT1GQVFJRF0nKS52YWwoKSwKICAgICAgICAgICAgICAgIEZvcm1JRDogcGFyZW50LiQoJ2lucHV0W25hbWU9Rm9ybUlEXScpLnZhbCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgdmFyIEZBUVRpdGxlID0gUmVzcG9uc2UuRkFRVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgRkFRQ29udGVudCA9ICcnLAogICAgICAgICAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gJycsCiAgICAgICAgICAgICAgICAgICAgRkFRTGluaywKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50TGlzdDsKCiAgICAgICAgICAgICAgICBpZiAoSW5zZXJ0VGV4dCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBSZXNwb25zZS5GQVFDb250ZW50OwogICAgICAgICAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gUmVzcG9uc2UuRkFRSFRNTENvbnRlbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKEluc2VydExpbmsgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICBGQVFMaW5rID0gJCgnI0ZBUVB1YmxpY0xpbmsnKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gRkFRQ29udGVudCArICdcbicgKyBGQVFMaW5rOwogICAgICAgICAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRSFRNTENvbnRlbnQgKyAnPGJyLz48YnIvPicgKyAnPGEgaHJlZj0iJyArIEZBUUxpbmsgKyAnIj4nICsgRkFRVGl0bGUgKyAnPC9hPic7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gR2V0IHBhcmVudCB3aW5kb3cgYXR0YWNobWVudCBsaXN0LgogICAgICAgICAgICAgICAgQXR0YWNobWVudExpc3QgPSBwYXJlbnQuJCgnLkF0dGFjaG1lbnRMaXN0Jyk7CgogICAgICAgICAgICAgICAgLy8gQWRkIGF0dGFjaG1lbnQgdW5sZXNzIGl0IGlzIGEgZHVwbGljYXRlLgogICAgICAgICAgICAgICAgJChSZXNwb25zZS5UaWNrZXRBdHRhY2htZW50cykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgQXR0YWNobWVudEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lID0gdGhpcy5GaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudEV4aXN0ID0gcGFyZW50LiQoJy5BdHRhY2htZW50TGlzdCB0Ym9keSB0ciB0ZC5GaWxlbmFtZScpLmZpbHRlcihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS50ZXh0KCkgPT09IEZpbGVuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIUF0dGFjaG1lbnRFeGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudEl0ZW0gPSBwYXJlbnQuQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0FqYXhEbkRVcGxvYWQvQXR0YWNobWVudEl0ZW0nLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlsZW5hbWUnIDogRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlsZXR5cGUnIDogdGhpcy5Db250ZW50VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlc2l6ZScgOiB0aGlzLkZpbGVzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVJRCcgICA6IHRoaXMuRmlsZUlELAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LiQoQXR0YWNobWVudEl0ZW0pLnByZXBlbmRUbyhBdHRhY2htZW50TGlzdC5maW5kKCd0Ym9keScpKS5mYWRlSW4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBTZXREYXRhKEZBUVRpdGxlLCBGQVFDb250ZW50LCBGQVFIVE1MQ29udGVudCk7CgogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuSW5pdEFqYXhEbkRVcGxvYWQoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2pzb24nCiAgICAgICAgKTsKICAgIH07CiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LlRpY2tldENvbXBvc2UgfHwge30pKTsK
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5DdXN0b21lciA9IEZBUS5DdXN0b21lciB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5DdXN0b21lci5UaWNrZXRab29tCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIFRpY2tldFpvb20uCiAqLwpGQVEuQ3VzdG9tZXIuRkFRWm9vbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIElmcmFtZUF1dG9IZWlnaHQKICAgICAqIEBtZW1iZXJvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSAtIFRoZSBpZnJhbWUgd2hpY2ggc2hvdWxkIGJlIGF1dG8taGVpZ2h0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTZXQgaWZyYW1lIGhlaWdodCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHJlYWwgY29udGVudCBoZWlnaHQgYW5kIGRlZmF1bHQgY29uZmlnIHNldHRpbmcuCiAgICAgKi8KICAgICBUYXJnZXROUy5JZnJhbWVBdXRvSGVpZ2h0ID0gZnVuY3Rpb24gKCRJZnJhbWUpIHsKICAgICAgICB2YXIgTmV3SGVpZ2h0OwoKICAgICAgICBpZiAoaXNKUXVlcnlPYmplY3QoJElmcmFtZSkpIHsKICAgICAgICAgICAgLy8gc2xpZ2h0bHkgY2hhbmdlIHRoZSB3aWR0aCBvZiB0aGUgaWZyYW1lIHRvIG5vdCBiZSBleGFjdGx5IDEwMCUgd2lkdGggYW55bW9yZQogICAgICAgICAgICAvLyB0aGlzIHByZXZlbnRzIGEgZG91YmxlIGhvcml6b250YWwgc2Nyb2xsYmFyIChmcm9tIGlmcmFtZSBhbmQgc3Vycm91bmRpbmcgZGl2KQogICAgICAgICAgICAkSWZyYW1lLndpZHRoKCRJZnJhbWUud2lkdGgoKSAtIDIpOwoKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmZpbmQoJ2JvZHknKS5oZWlnaHQoKTsKCiAgICAgICAgICAgIC8vIGlmIHRoZSBpRnJhbWVzIGhlaWdodCBpcyAwLCB3ZSBjb2xsYXBzZSB0aGUgd2lkZ2V0CiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPT09IDApIHsKICAgICAgICAgICAgICAgICRJZnJhbWUuY2xvc2VzdCgnLldpZGdldFNpbXBsZScpLnJlbW92ZUNsYXNzKCdFeHBhbmRlZCcpLmFkZENsYXNzKCdDb2xsYXBzZWQnKTsKICAgICAgICAgICAgfSBlbHNlIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID4gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodE1heCcpKSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodE1heCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhZGQgZGVsdGEgZm9yIHNjcm9sbGJhcgogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID4gMCkgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gcGFyc2VJbnQoTmV3SGVpZ2h0LCAxMCkgKyAyNTsKICAgICAgICAgICAgICAgICRJZnJhbWUuY29udGVudHMoKS5maW5kKCdodG1sJykuY3NzKHtvdmVyZmxvdzonaGlkZGVuJ30pOwogICAgICAgICAgICAgICAgJElmcmFtZS5jb250ZW50cygpLmZpbmQoJ2JvZHknKS5jc3Moe292ZXJmbG93OidhdXRvJ30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBtZW1iZXJvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbQogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRNZXNzYWdlIC0gYW4gRkFRIGZpZWxkLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBjbGFzcyBvZiBhIEZBUSBmaWVsZDoKICAgICAqICAgICAgdXNlciBjYWxscyB0aGlzIGZ1bmN0aW9uIGJ5IGNsaWNraW5nIG9uIHRoZSBmaWVsZCBoZWFkLCBmaWVsZCBnZXRzIGhpZGRlbiBieSByZW1vdmluZwogICAgICogICAgICB0aGUgY2xhc3MgJ1Zpc2libGUnLiBJZiB0aGUgZmllbGQgaGVhZCBpcyBjbGlja2VkIHdoaWxlIGl0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNsYXNzCiAgICAgKiAgICAgICdWaXNpYmxlJywgdGhlIGZpZWxkIGdldHMgdGhlIGNsYXNzICdWaXNpYmxlJyBhZ2FpbiBhbmQgaXQgd2lsbCBiZSBzaG93bi4KICAgICAqLwogICAgZnVuY3Rpb24gVG9nZ2xlTWVzc2FnZSgkTWVzc2FnZSl7CiAgICAgICAgaWYgKCRNZXNzYWdlLmhhc0NsYXNzKCdWaXNpYmxlJykpIHsKICAgICAgICAgICAgJE1lc3NhZ2UucmVtb3ZlQ2xhc3MoJ1Zpc2libGUnKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRNZXNzYWdlLmFkZENsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAbWVtYmVyb2YgRkFRLkN1c3RvbWVyLkZBUVpvb20KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGJpbmRzIGZ1bmN0aW9ucyB0byB0aGUgJ01lc3NhZ2VIZWFkZXInCiAgICAgKiAgICAgIHRvIHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgTWVzc2FnZUJvZHkgYW5kIHRoZSByZXBseSBmb3JtLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKXsKICAgICAgICB2YXIgJE1lc3NhZ2VzID0gJCgnI01lc3NhZ2VzID4gbGknKSwKICAgICAgICAgICAgJE1lc3NhZ2VIZWFkZXJzID0gJCgnLk1lc3NhZ2VIZWFkZXInLCAkTWVzc2FnZXMpOwoKICAgICAgICAkTWVzc2FnZUhlYWRlcnMuY2xpY2soZnVuY3Rpb24oRXZlbnQpewogICAgICAgICAgICBUb2dnbGVNZXNzYWdlKCQodGhpcykucGFyZW50KCkpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBpbml0IGJyb3dzZXIgbGluayBtZXNzYWdlIGNsb3NlIGJ1dHRvbgogICAgICAgIGlmICgkKCcuRkFRTWVzc2FnZUJyb3dzZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb246ICdDdXN0b21lckZBUVpvb20nLAogICAgICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogJ0Jyb3dzZXJMaW5rTWVzc2FnZScKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyJykuZmFkZU91dCgic2xvdyIpOwoKICAgICAgICAgICAgICAgIC8vIGNhbGwgc2VydmVyLCB0byBzYXZlIHRoYXQgdGhlIGJ1dHRvbiB3YXMgY2xvc2VkIGFuZCBkbyBub3Qgc2hvdyBpdCBhZ2FpbiBvbiByZWxvYWQKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgICAgICAgICAgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSwKICAgICAgICAgICAgICAgICAgICBEYXRhLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHt9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKCdhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnVGlja2V0QWN0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLlJhdGVCdXR0b24nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICAgICAgJCgnI1JhdGVWYWx1ZScpLnZhbChSYXRlTnVtYmVyKTsKICAgICAgICAgICAgJCgnI1JhdGVTdWJtaXRCdXR0b24nKS5mYWRlSW4oMjUwKTsKICAgICAgICAgICAgJCgnI0ZBUVZvdGluZycpLmZpbmQoJy5SYXRlQnV0dG9uJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBJdGVtUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnZGl2JykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlcikgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBNYWtlIHdob2xlIEZBUSBJdGVtIHJvdyBjbGlja2FibGUsIGJ1dCBub3QgdGhlIGhlYWRlcnMsIGNhbid0IHVzZSBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpCiAgICAgICAgLy8gc2luY2UgaXQgdXNlcyAidGFibGUgdHIiIGFzIHNlbGVjdG9yLCBzZWUgYnVnIzkzMjkuCiAgICAgICAgJCgidGJvZHkgdHIiKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICQoImEiLCB0aGlzKS5hdHRyKCJocmVmIik7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQ3VzdG9tZXIuRkFRWm9vbSB8fCB7fSkpOwo=
LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBGQVEgPSBGQVEgfHwge307CkZBUS5DdXN0b21lciA9IEZBUS5DdXN0b21lciB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIEZBUS5DdXN0b21lci5SZWxhdGVkQXJ0aWNsZXMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgRkFRLgogKi8KRkFRLkN1c3RvbWVyLlJlbGF0ZWRBcnRpY2xlcyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBTaG93UmVsYXRlZEFydGljbGVzCiAgICAgKiBAbWVtYmVyb2YgRkFRLkN1c3RvbWVyLlJlbGF0ZWRBcnRpY2xlcwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzbGlkZXMgaW4gYW5kIG91dCB0aGUgcmVsYXRlZCBhcnRpY2xlcwogICAgICovCiAgICBmdW5jdGlvbiBTaG93UmVsYXRlZEFydGljbGVzKCkgewogICAgICAgIGlmICggJCh3aW5kb3cpLndpZHRoKCkgPiAxMDIzICkgeyByZXR1cm4gfQoKICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuY3NzKCAndG9wJywgJycgKTsKICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuY3NzKCAnYm90dG9tJywgJzE2cHgnICk7CiAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcyA+IC5XaWRnZXRTaW1wbGUgPiAuSGVhZGVyJykub2ZmKCdjbGljaycpLm9uZSgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIEhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSAtIDQ4OwogICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuY3NzKCAnYm90dG9tJywgJycgKTsKICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLmNzcyggJ3RvcCcsIEhlaWdodCArICdweCcgKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIEZBUS5DdXN0b21lci5SZWxhdGVkQXJ0aWNsZXMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZSB0aGUgRkFRIG1vZHVsZSAoZnVuY3Rpb25hbGl0eSBmb3IgcmVsYXRlZCBhcnRpY2xlcykuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykub24oJ2NsaWNrJywgU2hvd1JlbGF0ZWRBcnRpY2xlcyk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkN1c3RvbWVyLlJlbGF0ZWRBcnRpY2xlcyB8fCB7fSkpOwo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gQXJ0aWNsZUxpc3QgRXhwYW5kaW5nCiAqLwoKLkZBUSAuT3ZlcnZpZXdDb250cm9sIGRpdiB7CiAgICBwYWRkaW5nOiAwcHg7Cn0KCi5GQVEgI092ZXJ2aWV3Qm9keSB7CiAgICBtYXJnaW46IDAgMCA4cHggMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDM1MHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbi5NZWRpdW0gewogICAgd2lkdGg6IDI5MHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBGQVFNaW5pTGlzdAogKi8KCnVsLkZBUU1pbmlMaXN0IHNwYW4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCmlmcmFtZS5UZXh0T3B0aW9uLkZBUSB7CiAgICB3aWR0aDogOTAwcHg7CiAgICBtaW4taGVpZ2h0OiA2MDBweDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZnJhbWVib3JkZXI6IDA7Cn0KCmZpZWxkc2V0LlRhYmxlU21hbGwgPiBkaXYuRmllbGQgewogICAgbWFyZ2luLWxlZnQ6IDI0JSAhaW1wb3J0YW50Owp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gbGFiZWwgewogICAgd2lkdGg6IDI0JSAhaW1wb3J0YW50Owp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gZGl2LkZBUURpdmlkZXIgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQ0NDQ0M7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdHIuSW52YWxpZCB7CiAgICBjb2xvcjogI0NDQzsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSB7CiAgICBjbGVhcjogbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiA2MjJweDsKICAgIGxpbmUtaGVpZ2h0OiAxM3B4Owp9CgojRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIC5GQVFWb3RlcyB7CiAgICBwYWRkaW5nOiAwIDNweDsKICAgIHdpZHRoOiA3MHB4Owp9CgojRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIC5GQVFWb3RlcyBpIHsKICAgIG1hcmdpbi1yaWdodDogMHB4Owp9CgojRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIC5GQVFDYXRlZ29yaWUgewogICAgd2lkdGg6IDI1JTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgdGFibGUgLkZBUVRpdGxlIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgdGFibGUgLkZBUURhdGUgewogICAgd2lkdGg6IDY1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Cgp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRkFRRGV0YWlscwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgoKLyoqCiAqIEBzdWJzZWN0aW9uICBBcnRpY2xlIHRhYmxlIGJvZHkKICovCgouQXJ0aWNsZUZBUUNvbnRlbnQgewogICAgcGFkZGluZzogMTFweCAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKfQoKLkFydGljbGVGQVFDb250ZW50IC5GQVFWb3RlRm9ybSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCBwLkNlbnRlciB7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIG1hcmdpbjogMHB4IDUwcHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKfQoKLkFydGljbGVGQVFDb250ZW50IC5GQVFWb3RlRm9ybSAuQ2FsbEZvckFjdGlvbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMTBweCBhdXRvIDBweCBhdXRvOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgLkZBUVZvdGVGb3JtIC5DYWxsRm9yQWN0aW9uLkhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouRkFRU3RhdGVOYW1lIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAxMHB4OwogICAgdG9wOiA3cHg7CiAgICBmb250LXNpemU6IDgwJTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKZmllbGRzZXQgLkZBUVN0YXRlTmFtZSB7CiAgICBwb3NpdGlvbjogc3RhdGljOwp9CgouUmF0ZUJ1dHRvbnMgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouUmF0ZUJ1dHRvbnMgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouUmF0ZUJ1dHRvbnMgPiBsaTpmaXJzdC1jaGlsZCwKLlJhdGVCdXR0b25zID4gbGk6bGFzdC1jaGlsZCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlZpc2libGUtU2NyZWVuUyAuUmF0ZUJ1dHRvbnMgPiBsaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCi5WaXNpYmxlLVNjcmVlblMgLlJhdGVCdXR0b25zID4gbGkgc3BhbiB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKfQoKLlJhdGVCdXR0b24gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICB3aWR0aDogMjVweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgY29sb3I6ICMwMDAwMDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5SYXRlQnV0dG9uIGkgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICB3aWR0aDogMTAwJTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGNvbG9yOiAjOTk5Owp9CgouUmF0ZUJ1dHRvbiBpLmZhLXN0YXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5mYS1zdGFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgY29sb3I6ICNFOTdEMzQ7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuZmEtc3Rhci1vIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uOmhvdmVyIGkuZmEtc3Rhci1vIHsKICAgIGNvbG9yOiAjMDAwOwp9CgouUmF0ZVN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctbGVmdDogMXB4OwogICAgZm9udC1zaXplOiAxMHB4Owp9CgouUmF0ZVN0YXJUZXh0IHsKICAgIHRleHQtaW5kZW50OjVweDsKfQoKLlJhdGVMYWJlbEJlZm9yZSwKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGNvbG9yOiAjMzMzOwogICAgcGFkZGluZy10b3A6IDVweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLlpvb21TbWFsbEJ1dHRvbnsKICAgIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgouRkFRTWVzc2FnZUJyb3dzZXIgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIHBhZGRpbmc6IDBweDsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIHAgewogICAgIHBhZGRpbmc6IDVweCAyMHB4OwogICAgIGJhY2tncm91bmQtY29sb3I6ICNFOEU4RTg7CiAgICAgZm9udC1zaXplOiAxMXB4OwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiA0cHg7CiAgICB0b3A6IDZweDsKICAgIGNvbG9yOiAjNUQ1RDVEOwp9CgouRkFRTWVzc2FnZUJyb3dzZXIgYS5DbG9zZTpob3ZlciB7CiAgICBjb2xvcjogIzAwMDsKfQp9Cg==
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmJJREFUeNqkU0toE1EUPZkk84n5GMnHfrRBKRS0xCK21SKE1IUVV7oWgxa7KW6kkK2LghhdiBuDRURxIa6lOwlCjSgBJbhKhSjakibSTP7J/HzvTTMYcNcHZ97Mvfec9+7hjs0wDOxnOegjdmMDbrcHPt9BiKIU4ThuiYQXCMb36goE67qupzuddlGWq2g06sg8mzMF+osUJDh0U7Epd+Ds5AEMB830VlmNZvPNaCbXXiQ1KyT0fOAGfbLk7KST18f4yBAPszWN5Y6GbRg77MHsSSGwuvYjLes6+iJMQFGUiK62UsnEcX40yNFvXLj1aaDXh3cmcGrCh2RihL99L58iNRkSLnI0Wa83luanfYHRkJ2RVVXFtctDDOenvKjVavj4dYflaE38jC9AOZTLBNrtzsL8bIgVaJrGcDXux8UZHkFvl+ZRKu2gUChgc/M7Zk6IjGO1oOvceGTYRfYeO12Wa2i12vj8rYEnb7YxPRnCzStHiPMNUGvCfjvjWAIOhwsw6E26hFynhsJud+L+iypsNgmry8fQbDZJHc/8MMjFGacvIIreQuFnK3rI1SNEnsA0LvvqHNsrlV04naJl6K+yybE8kCT/+vucQocIPC9YuLT8m+HfmCCIyOZNjiUgCJ50JmerlGUqILHTKETRx9D/ptj+I+BD3lmhHEuA9FvsqeLKg5dqr7QrsEKHQ8Tbx2EG+k5jW4T86DV6tJZyBiaRTla5auDu004qdpoPzEWdGDGYY6RnDhtfFGRySqXVMQZG2UZHNr5YYubtrQjBf38mAnptdrKm9fBuLWwK7Gf9FWAAFbMKX7AnppcAAAAASUVORK5CYII=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDg0cHgpIHsKCiAgICAjRkFRVm90aW5nIC5SYXRlTGFiZWxCZWZvcmUsCiAgICAjRkFRVm90aW5nIC5SYXRlTGFiZWxBZnRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAjRkFRVm90aW5nIC5BY3Rpb25Sb3cgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGhlaWdodDogMTI5cHg7CiAgICAgICAgcGFkZGluZzogMHB4IDE2cHggMTZweCAxNnB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDAuNnB4IHNvbGlkICNlNWU1ZWI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CgoKICAgICAgICAvKiB0ZXh0ICsgYnJlYWRjcnVtYiAvIHNlYXJjaCAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggMTAwJSAtIDMycHggKTsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDg0cHggNDVweDsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwoKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgICNvb29NYWluQm94IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y5OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoIDEwMHZoIC0gMjY1cHggKTsKICAgIH0KCiAgICAjb29vU2VhcmNoQm94IGkub29vZm8tc2VhcmNoIHsKICAgICAgICB0b3A6IDE2MHB4OwogICAgICAgIGxlZnQ6IDI2cHg7CiAgICB9CgogICAgLldpZGdldFNpbXBsZSB7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgIH0KCiAgICAub29vU3ViIHsKICAgICAgICBwYWRkaW5nOiAyNHB4IDI0cHggMjRweCAyNHB4OwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGhlaWdodDogMTQ1cHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMS4ycHggc29saWQgI2U1ZTVlYjsKCiAgICAgICAgLyogdGV4dCArIGJyZWFkY3J1bWIgLyBzZWFyY2ggKi8KICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMTAwJTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQoKICAgIC5XaWRnZXRTaW1wbGUgewogICAgICAgIG1hcmdpbi10b3A6IDQ4cHg7CiAgICB9CgogICAgLm9vb1N1YiB7CiAgICAgICAgcGFkZGluZzogMjRweCAzNnB4IDI0cHggMzZweDsKICAgIH0KCn0KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgogICAgI29vb0hlYWRlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKCiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgIH0KCiAgICAjb29vSGVhZGVyIGkgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzcHg7CiAgICB9CgogICAgLkJyZWFkQ3J1bWIgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB9CgogICAgLkJyZWFkQ3J1bWIgYSwKICAgIC5CcmVhZENydW1iIGgzIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB9CgogICAgLkJyZWFkQ3J1bWIgPiBhOmFmdGVyIHsKICAgICAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqLwogICAgICAgIGZvbnQtZmFtaWx5OiAnb3RvYm8nICFpbXBvcnRhbnQ7CiAgICAgICAgc3BlYWs6IG5vbmU7CiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC12YXJpYW50OiBub3JtYWw7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqLwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CgogICAgICAgIGNvbnRlbnQ6ICJcZTkwNCI7CiAgICAgICAgY29sb3I6ICM3ZjgwOWQ7CiAgICAgICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogNHB4OwogICAgfQoKICAgICNvb29DdXN0b21lck5vdGlmaWNhdGlvbnMgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICB9CgogICAgLldpZGdldFNpbXBsZSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDUwcHg7CiAgICB9CgogICAgLkhlYWRlciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDE2cHg7CiAgICB9CgovKiBTdWJDYXRlZ29yaWVzICovCiAgICAub29vU3ViQm94IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdG9wOiAtNXB4OwogICAgICAgIGxlZnQ6IC01cHg7CiAgICAgICAgcGFkZGluZzogNXB4IDVweCA1cHggNXB4OwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1heC1oZWlnaHQ6IDI2MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICB9CgogICAgLm9vb1N1YiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGhlaWdodDogNjZweDsKICAgICAgICB3aWR0aDogMjU2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAgIG1hcmdpbi1yaWdodDogMTZweDsKICAgICAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgfQoKICAgIC5vb29TdWIgPiBoMywKICAgIC5vb29TdWIgPiBwIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB9CgogICAgLm9vb1N1YiA+IGgzIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWF4LXdpZHRoOiAyMjBweDsKICAgIH0KCiAgICAub29vU3ViQ291bnQgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgfQoKICAgIC5vb29Db21tZW50IHsKICAgICAgICBoZWlnaHQ6IDQycHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICB9CgovKiBhcnRpY2xlIGxpc3QgKi8KICAgIC5IZWFkZXIgPiBoMiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgfQogICAgLlBhZ2luYXRpb24gewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBwYWRkaW5nLXRvcDogMjBweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4OwogICAgfQoKICAgIC5vb29GQVEgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICB3aWR0aDogY2FsYyggMTAwJSAtIDcycHggKTsKICAgICAgICBtYXgtd2lkdGg6IDk0NHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgdmFyKC0tY29sU2hhZG93RGFyayk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICBwYWRkaW5nOiAxNnB4IDM2cHggMTZweCAzNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICB9CgogICAgLm9vb0ZBUSBoMyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1heC13aWR0aDogY2FsYyggMTAwJSAtIDQwcHggKTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB9CgogICAgLm9vb0ZBUSBwIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgcGFkZGluZy10b3A6IDJweDsKICAgIH0KCi8qIGFydGljbGUgem9vbSAqLwoKICAgICNNZXNzYWdlcyA+IGxpLAogICAgI1pvb21TaWRlYmFyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogY2FsYyggMTAwJSAtIDcycHggKTsKICAgICAgICBtYXgtd2lkdGg6IDk0NHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICBwYWRkaW5nOiAyNHB4IDM2cHggMjRweCAzNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICB9CgogICAgI01lc3NhZ2VzIC5NZXNzYWdlQm9keSB7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICB9CgogICAgLkF0dGFjaG1lbnRzLAogICAgI01ldGFkYXRhIHsKICAgICAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgfQoKLyogUmF0aW5nICovCiAgICAuUmF0ZUJ1dHRvbiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDMwcHg7CiAgICAgICAgd2lkdGg6IDI1cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIGNvbG9yOiAjMDAwMDAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KICAgIAogICAgLlJUTCAuUmF0ZUJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgfQogICAgCiAgICAuUmF0ZUJ1dHRvbiBpIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGNvbG9yOiAjN2Y4MDlkOwogICAgICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0TGlnaHQpOwogICAgfQogICAgCiAgICAuUmF0ZUJ1dHRvbiBpLmZhLXN0YXIgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAKICAgIC5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuZmEtc3RhciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgY29sb3I6ICMwMDFiZmY7CiAgICAgICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7CiAgICB9CiAgICAKICAgIC5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuZmEtc3Rhci1vIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQogICAgCiAgICAuUmF0ZUJ1dHRvbjpob3ZlciBpLmZhLXN0YXItbyB7CiAgICAgICAgY29sb3I6ICMwMDAyM2M7CiAgICAgICAgY29sb3I6IHZhcigtLWNvbE1haW5EYXJrKTsKICAgIH0KICAgIAogICAgLlJhdGVTdGFyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIHBhZGRpbmctbGVmdDogMXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgIH0KICAgIAogICAgLlJUTCAuUmF0ZVN0YXIgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICAgIAogICAgLlJhdGVTdGFyVGV4dCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDsKICAgIH0KICAgIAogICAgLlJUTCAuUmF0ZVN0YXJUZXh0IHsKICAgICAgICBtYXJnaW4tbGVmdDogMHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogNnB4OwogICAgfQogICAgCiAgICAuUmF0ZUxhYmVsQmVmb3JlIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgfQogICAgCiAgICAuUlRMIC5SYXRlTGFiZWxCZWZvcmUgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICAgIAogICAgLlJhdGVMYWJlbEFmdGVyIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMjVweDsKICAgIH0KICAgIAogICAgLlJUTCAuUmF0ZUxhYmVsQWZ0ZXIgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiA2NXB4OwogICAgfQogICAgCiAgICAuUmF0aW5nTGFiZWwgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDJweDsKICAgIH0KICAgIAogICAgLlJUTCAuUmF0aW5nTGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgIH0KCiAgICAuVm90aW5nQm94IHsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgfQoKICAgICNGQVFWb3RpbmcgLlNwYWNpbmdUb3AgewogICAgICAgIGhlaWdodDogMTJweDsKICAgIH0KCi8qICAgIC5TcGFjaW5nVG9wIHsKICAgICAgICBtYXJnaW4tdG9wOiAxM3B4OwogICAgfQogICAgCiAgICAuU3BhY2luZ1RvcExhcmdlIHsKICAgICAgICBtYXJnaW4tdG9wOiAyNnB4OwogICAgfQogICAgCiAgICAuUlRMIC5Wb3RpbmdDb250YWluZXIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KICAgIAogICAgLlZvdGluZ1F1ZXN0aW9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6MTBweDsKICAgICAgICBjb2xvcjogIzAwMDAwMDsKICAgIH0KICAgIAogICAgLlZvdGluZ0JveCB7CiAgICAgICAgbWluLXdpZHRoOiAyMHBjOwogICAgICAgIG1hcmdpbjogMCAzMHB4IDIxcHg7CiAgICAgICAgY29sb3I6ICM2QTZBNkE7CiAgICAgICAgYmFja2dyb3VuZDogI0Y5RjlGOTsKICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNENkQ2RDY7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0Q2RDZENjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDZENkQ2OwogICAgfQogICAgCiAgICAuVm90aW5nQm94ID4gI01lc3NlbmdlciB7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRUVFOwogICAgfQoqLyAgICAKfQo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCi8qIG92ZXJ3cml0ZSBzdGFuZGFyZCAqLwpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjNweCkgewoKICAgICNGQVFSZWxhdGVkQXJ0aWNsZXMgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CgogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICByaWdodDogMTZweDsKICAgICAgICBib3R0b206IC03OXB4OwoKICAgICAgICB3aWR0aDogMjM4cHg7CiAgICAgICAgcGFkZGluZzogMTZweCAyNHB4IDE2cHggMjRweDsKCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTsKICAgICAgICB6LWluZGV4OiAyMDAwOwogICAgfQoKICAgICNGQVFSZWxhdGVkQXJ0aWNsZXMgPiAuV2lkZ2V0U2ltcGxlID4gLkhlYWRlciA+IGgzOjphZnRlciB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIHBhZGRpbmctdG9wOiA1cHg7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqLwogICAgICAgIGZvbnQtZmFtaWx5OiAnb3RvYm8nICFpbXBvcnRhbnQ7CiAgICAgICAgc3BlYWs6IG5vbmU7CiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC12YXJpYW50OiBub3JtYWw7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqLwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiAgICAgICAgY29udGVudDogIlxlOTBkIjsKICAgIH0KICAgIAogICAgI0ZBUVJlbGF0ZWRBcnRpY2xlcyA+IC5XaWRnZXRTaW1wbGUgPiAuSGVhZGVyIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9Cgp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkgYW5kIChtYXgtd2lkdGg6IDEyNzlweCkgewoKICAgIHRleHRhcmVhI1JpY2hUZXh0LAogICAgZGl2I2NrZV9SaWNoVGV4dCB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDY2JSAtIDE3NnB4ICkgIWltcG9ydGFudDsKICAgIH0KCiAgICAuUmljaFRleHRIb2xkZXIgPiBsYWJlbFtmb3I9J1JpY2hUZXh0J10gewogICAgICAgIGxlZnQ6IGNhbGMoIC02NiUgKyAyMDBweCApOwoKICAgICAgICB3aWR0aDogMHB4OwogICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgICBtYXJnaW46IDBweDsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIH0KCiAgICAjRkFRUmVsYXRlZEFydGljbGVzIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbGVmdDogOHB4OwoKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKCiAgICAgICAgd2lkdGg6IDIzOHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9Cgp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkgewoKICAgIHRleHRhcmVhI1JpY2hUZXh0LAogICAgZGl2I2NrZV9SaWNoVGV4dCB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDY2JSAtIDEwMHB4ICkgIWltcG9ydGFudDsKICAgIH0KCiAgICAuUmljaFRleHRIb2xkZXIgPiBsYWJlbFtmb3I9J1JpY2hUZXh0J10gewogICAgICAgIGxlZnQ6IGNhbGMoIC02NiUgKyAxMjRweCApOwoKICAgICAgICB3aWR0aDogMHB4OwogICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgICBtYXJnaW46IDBweDsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIH0KCiAgICAjRkFRUmVsYXRlZEFydGljbGVzIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbGVmdDogOHB4OwoKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKCiAgICAgICAgd2lkdGg6IDIzOHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9Cgp9CgojRkFRUmVsYXRlZEFydGljbGVzLkhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXM6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogNXB4OwoKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqLwogICAgZm9udC1mYW1pbHk6ICdvdG9ibycgIWltcG9ydGFudDsKICAgIHNwZWFrOiBub25lOwogICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtdmFyaWFudDogbm9ybWFsOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICBsaW5lLWhlaWdodDogMTsKCiAgICAvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi8KICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIGNvbnRlbnQ6ICJcZTkxMSI7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgPiAuV2lkZ2V0U2ltcGxlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICB3aWR0aDogMjIwcHg7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwp9CgojRkFRUmVsYXRlZEFydGljbGVzIC5IZWFkZXIgewogICAgbWFyZ2luLWJvdHRvbTogOHB4Owp9CgojRkFRUmVsYXRlZEFydGljbGVzIGxpIHsKICAgIHBhZGRpbmctdG9wOiAxNnB4OwogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKICAgIGJvcmRlci10b3A6IDEuMnB4IHNvbGlkICNlNWU1ZWI7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgbGk6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcDogbm9uZTsKfQoKfSAvKiBlbmQgQG1lZGlhICovCg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoK
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoK
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+PGc+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PC9nPjxnPjxwYXRoIGQ9Ik0xNy41LDQuNWMtMS45NSwwLTQuMDUsMC40LTUuNSwxLjVjLTEuNDUtMS4xLTMuNTUtMS41LTUuNS0xLjVjLTEuNDUsMC0yLjk5LDAuMjItNC4yOCwwLjc5QzEuNDksNS42MiwxLDYuMzMsMSw3LjE0IGwwLDExLjI4YzAsMS4zLDEuMjIsMi4yNiwyLjQ4LDEuOTRDNC40NiwyMC4xMSw1LjUsMjAsNi41LDIwYzEuNTYsMCwzLjIyLDAuMjYsNC41NiwwLjkyYzAuNiwwLjMsMS4yOCwwLjMsMS44NywwIGMxLjM0LTAuNjcsMy0wLjkyLDQuNTYtMC45MmMxLDAsMi4wNCwwLjExLDMuMDIsMC4zNmMxLjI2LDAuMzMsMi40OC0wLjYzLDIuNDgtMS45NGwwLTExLjI4YzAtMC44MS0wLjQ5LTEuNTItMS4yMi0xLjg1IEMyMC40OSw0LjcyLDE4Ljk1LDQuNSwxNy41LDQuNXogTTIxLDE3LjIzYzAsMC42My0wLjU4LDEuMDktMS4yLDAuOThjLTAuNzUtMC4xNC0xLjUzLTAuMi0yLjMtMC4yYy0xLjcsMC00LjE1LDAuNjUtNS41LDEuNVY4IGMxLjM1LTAuODUsMy44LTEuNSw1LjUtMS41YzAuOTIsMCwxLjgzLDAuMDksMi43LDAuMjhjMC40NiwwLjEsMC44LDAuNTEsMC44LDAuOThWMTcuMjN6Ii8+PGcvPjxwYXRoIGQ9Ik0xMy45OCwxMS4wMWMtMC4zMiwwLTAuNjEtMC4yLTAuNzEtMC41MmMtMC4xMy0wLjM5LDAuMDktMC44MiwwLjQ4LTAuOTRjMS41NC0wLjUsMy41My0wLjY2LDUuMzYtMC40NSBjMC40MSwwLjA1LDAuNzEsMC40MiwwLjY2LDAuODNjLTAuMDUsMC40MS0wLjQyLDAuNzEtMC44MywwLjY2Yy0xLjYyLTAuMTktMy4zOS0wLjA0LTQuNzMsMC4zOSBDMTQuMTMsMTAuOTksMTQuMDUsMTEuMDEsMTMuOTgsMTEuMDF6Ii8+PHBhdGggZD0iTTEzLjk4LDEzLjY3Yy0wLjMyLDAtMC42MS0wLjItMC43MS0wLjUyYy0wLjEzLTAuMzksMC4wOS0wLjgyLDAuNDgtMC45NGMxLjUzLTAuNSwzLjUzLTAuNjYsNS4zNi0wLjQ1IGMwLjQxLDAuMDUsMC43MSwwLjQyLDAuNjYsMC44M2MtMC4wNSwwLjQxLTAuNDIsMC43MS0wLjgzLDAuNjZjLTEuNjItMC4xOS0zLjM5LTAuMDQtNC43MywwLjM5IEMxNC4xMywxMy42NiwxNC4wNSwxMy42NywxMy45OCwxMy42N3oiLz48cGF0aCBkPSJNMTMuOTgsMTYuMzNjLTAuMzIsMC0wLjYxLTAuMi0wLjcxLTAuNTJjLTAuMTMtMC4zOSwwLjA5LTAuODIsMC40OC0wLjk0YzEuNTMtMC41LDMuNTMtMC42Niw1LjM2LTAuNDUgYzAuNDEsMC4wNSwwLjcxLDAuNDIsMC42NiwwLjgzYy0wLjA1LDAuNDEtMC40MiwwLjctMC44MywwLjY2Yy0xLjYyLTAuMTktMy4zOS0wLjA0LTQuNzMsMC4zOSBDMTQuMTMsMTYuMzIsMTQuMDUsMTYuMzMsMTMuOTgsMTYuMzN6Ii8+PC9nPjwvc3ZnPg==
IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTGlzdDo6VXRpbCBxdygpOwp1c2UgS2VybmVsOjpPdXRwdXQ6OlRlbXBsYXRlOjpQcm92aWRlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCik7Cgo9aGVhZDEgTkFNRQoKdmFyOjpwYWNrYWdlc2V0dXA6OkZBUSAtIGNvZGUgdG8gZXhlY3V0ZSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENvZGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6RkFRJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEZvcmNlIGEgcmVsb2FkIG9mIFpaWkF1dG8ucG0gYW5kIFpaWkFBdXRvLnBtIHRvIGdldCB0aGUgZnJlc2ggY29uZmlndXJhdGlvbiB2YWx1ZXMuCiAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlSU5DICkgewogICAgICAgIGlmICggJE1vZHVsZSA9fiBtL1paWkFBP3V0b1wucG0kLyApIHsKICAgICAgICAgICAgZGVsZXRlICRJTkN7JE1vZHVsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgQ3JlYXRlIGNvbW1vbiBvYmplY3RzIHdpdGggZnJlc2ggZGVmYXVsdCBjb25maWcuCiAgICAkS2VybmVsOjpPTS0+T2JqZWN0c0Rpc2NhcmQoKTsKCiAgICAjIERlZmluZSBVc2VySUQgcGFyYW1ldGVyIGZvciB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHN0YXRzIG9iamVjdC4KICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgRGVmaW5lIGZpbGUgcHJlZml4LgogICAgJFNlbGYtPntGaWxlUHJlZml4fSA9ICdGQVEnOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGluc2VydCB0aGUgRkFRIHN0YXRlcwogICAgJFNlbGYtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCiAgICAjIEFkZCBkZWZhdWx0IGdyb3VwcyB0byB0aGUgY2F0ZWdvcnkgJ01pc2MnLgogICAgJFNlbGYtPl9DYXRlZ29yeUdyb3VwU2V0KAogICAgICAgIENhdGVnb3J5ID0+ICdNaXNjJywKICAgICAgICBHcm91cHMgICA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzCiAgICAkU2VsZi0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zZXJ0IHRoZSBGQVEgc3RhdGVzCiAgICAkU2VsZi0+X0luc2VydEZBUVN0YXRlcygpOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgRkFRIGxhbmd1YWdlcwogICAgJFNlbGYtPl9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKTsKCiAgICAjIGRlbGV0ZSB0aGUgRkFRIGNhY2hlICh0byBhdm9pZCBvbGQgZGF0YSBmcm9tIHByZXZpb3VzIEZBUSBtb2R1bGVzKQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZVNwZWNpYWwoKQoKcnVuIHNwZWNpYWwgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlU3BlY2lhbCgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlU3BlY2lhbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29udmVydCBcbiB0byA8YnI+IGZvciBleGlzdGluZyBhcnRpY2xlcwogICAgJFNlbGYtPl9Db252ZXJ0TmV3bGluZXMoKTsKCiAgICAjIHN0YXJ0IG5vcm1hbCBjb2RlIHVwZ3JhZGUKICAgICRTZWxmLT5Db2RlVXBncmFkZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xKCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiA0LjAuMS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIE1pZ3JhdGUgdGhlIERUTCBDb250ZW50IGluIHRoZSBTeXNDb25maWcuCiAgICAkU2VsZi0+X01pZ3JhdGVEVExJblN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjkxLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCiAgICAkU2VsZi0+X01pZ3JhdGVDb25maWdzKCk7CgogICAgIyBTZXQgY29udGVudCB0eXBlLgogICAgJFNlbGYtPl9TZXRDb250ZW50VHlwZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzVfMF85MigpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNS4wLjkyLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzVfMF85MigpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl81XzBfOTIgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBSZWNvdmVyIHRoZSBvbGQgcGVybWlzc2lvbnMKICAgICRTZWxmLT5fTWlncmF0ZVBlcm1pc3Npb25zKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbW92ZSBEeW5hbWljIEZpZWxkcyBhbmQgaXRzIHZhbHVlcwogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzRGVsZXRlKCk7CgogICAgIyBEZWFjdGl2YXRlIHRoZSBncm91cCAnZmFxJy4KICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2ZhcScsCiAgICApOwoKICAgICMgRGVhY3RpdmF0ZSB0aGUgZ3JvdXAgJ2ZhcV9hZG1pbicuCiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdmYXFfYWRtaW4nLAogICAgKTsKCiAgICAjIERlYWN0aXZhdGUgdGhlIGdyb3VwICdmYXFfYXBwcm92YWwnLgogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnZmFxX2FwcHJvdmFsJywKICAgICk7CgogICAgIyB1bmluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c1VuaW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3Mgd2l0aCBGQVEgYXJ0aWNsZXMKICAgICRTZWxmLT5fTGlua0RlbGV0ZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0luc2VydEZBUVN0YXRlcygpCgppbnNlcnRzIG5lZWRlZCBGQVEgc3RhdGVzIGludG8gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCj1jdXQKCnN1YiBfSW5zZXJ0RkFRU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgZmFxX3N0YXRlX3R5cGVzID0+IGZhcV9zdGF0ZXMKICAgIG15ICVTdGF0ZSA9ICgKICAgICAgICAnaW50ZXJuYWwnID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAnZXh0ZXJuYWwnID0+ICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICAgICAncHVibGljJyAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgKTsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlU3RhdGUgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJFN0YXRlVHlwZVJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGUgc3RhdGUKICAgICAgICAkRkFRT2JqZWN0LT5TdGF0ZUFkZCgKICAgICAgICAgICAgTmFtZSAgID0+ICRTdGF0ZXskVHlwZX0sCiAgICAgICAgICAgIFR5cGVJRCA9PiAkU3RhdGVUeXBlUmVmLT57U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ29udmVydE5ld2xpbmVzKCkKCmNvdmVydHMgYWxsIFxuIGludG8gPGJyPiBmb3IgRmllbGRzIDEtNiBpbiBhbGwgZXhpc3RpbmcgRkFRIGFydGljbGVzCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ29udmVydE5ld2xpbmVzKCk7Cgo9Y3V0CgpzdWIgX0NvbnZlcnROZXdsaW5lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgb25seSBjb252ZXJ0IFxuIHRvIDxicj4gaWYgSFRNTCB2aWV3IGlzIGVuYWJsZWQKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBGQVEgSURzCiAgICBteSBASXRlbUlEczsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtIiwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoKCBASXRlbUlEcywgJFJvd1swXSApOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEl0ZW1JRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IEZBUSBhcnRpY2xlIGZpZWxkcyAxLTYKICAgICAgICBteSAkRm91bmROZXdsaW5lOwogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAocXcgKEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgICAgICBuZXh0IEtFWSBpZiAhJEZBUXskS2V5fTsKCiAgICAgICAgICAgICMgcmVwbGFjZSBcbiB3aXRoIDxicj4KICAgICAgICAgICAgJEZBUXskS2V5fSA9fiBzL1xuLzxiclwvPlxuL2c7CgogICAgICAgICAgICAkRm91bmROZXdsaW5lID0gMTsKICAgICAgICB9CiAgICAgICAgbmV4dCBJRCBpZiAhJEZvdW5kTmV3bGluZTsKCiAgICAgICAgIyB1cGRhdGUgRkFRIGRhdGEKICAgICAgICAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVEsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAjIGdldCBncm91cCBvYmplY3QKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRHcm91cE9iamVjdC0+R3JvdXBMaXN0KCk7CgogICAgIyByZXZlcnNlIHRoZSBncm91cCBsaXN0IGZvciBlYXNpZXIgbG9va3VwCiAgICBteSAlR3JvdXBMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJUdyb3VwTGlzdDsKCiAgICAjIGNoZWNrIGlmIGdyb3VwIGFscmVhZHkgZXhpc3RzCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cExpc3RSZXZlcnNleyAkUGFyYW17TmFtZX0gfTsKCiAgICAjIHJlYWN0aXZhdGUgdGhlIGdyb3VwCiAgICBpZiAoJEdyb3VwSUQpIHsKCiAgICAgICAgIyBnZXQgY3VycmVudCBncm91cCBkYXRhCiAgICAgICAgbXkgJUdyb3VwRGF0YSA9ICRHcm91cE9iamVjdC0+R3JvdXBHZXQoCiAgICAgICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWFjdGl2YXRlIGdyb3VwCiAgICAgICAgJEdyb3VwT2JqZWN0LT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIENvbW1lbnQgPT4gJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbG9va3VwIHRoZSBuZXcgZ3JvdXAgaWQKICAgIG15ICROZXdHcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJFBhcmFte05hbWV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGFkZCB1c2VyIHJvb3QgdG8gdGhlIGdyb3VwCiAgICAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dyb3VwRGVhY3RpdmF0ZSgpCgpkZWFjdGl2YXRlIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBEZWFjdGl2YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTmFtZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBncm91cCBvYmplY3QKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICMgbG9va3VwIGdyb3VwIGlkCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cE9iamVjdC0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRHcm91cElEOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgbXkgJUdyb3VwRGF0YSA9ICRHcm91cE9iamVjdC0+R3JvdXBHZXQoCiAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgZ3JvdXAKICAgICRHcm91cE9iamVjdC0+R3JvdXBVcGRhdGUoCiAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle2ludmFsaWR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfTGlua0RlbGV0ZSgpCgpkZWxldGUgYWxsIGV4aXN0aW5nIGxpbmtzIHRvIEZBUSBhcnRpY2xlcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0xpbmtEZWxldGUoKTsKCj1jdXQKCnN1YiBfTGlua0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYWxsIEZBUSBhcnRpY2xlIGlkcwogICAgbXkgQEl0ZW1JRHMgPSAoKTsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCBGUk9NIGZhcV9pdGVtJwogICAgKTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQEl0ZW1JRHMsICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gaWYgIUBJdGVtSURzOwoKICAgICMgZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSBsaW5rcwogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKQoKY3JlYXRlcyBhZGRpdGlvbmFsIEZBUSBsYW5ndWFnZXMgZm9yIHN5c3RlbSBkZWZhdWx0IGxhbmd1YWdlIGFuZCB1c2VyIGxhbmd1YWdlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7Cgo9Y3V0CgpzdWIgX0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHN5c3RlbSBkZWZhdWx0IGxhbmd1YWdlCiAgICBteSAkTGFuZ3VhZ2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0RlZmF1bHRMYW5ndWFnZScpOwogICAgaWYgKCRMYW5ndWFnZSkgewoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBnZXQgY3VycmVudCBGQVEgbGFuZ3VhZ2VzCiAgICAgICAgbXkgJUN1cnJlbnRMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdXNlIHJldmVyc2UgaGFzaCBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUxhbmd1YWdlcyA9IHJldmVyc2UgJUN1cnJlbnRMYW5ndWFnZXM7CgogICAgICAgICMgY2hlY2sgaWYgbGFuZ3VhZ2UgaXMgYWxyZWFkeSBkZWZpbmVkCiAgICAgICAgaWYgKCAhJFJldmVyc2VMYW5ndWFnZXN7JExhbmd1YWdlfSApIHsKCiAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJExhbmd1YWdlLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0NhdGVnb3J5R3JvdXBTZXQoKQoKQWRkcyB0aGUgZ2l2ZW4gZ3JvdXAgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGNhdGVnb3J5LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NhdGVnb3J5R3JvdXBTZXQoCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ01pc2MnLAogICAgICAgIEdyb3VwcyAgID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgKTsKCj1jdXQKCnN1YiBfQ2F0ZWdvcnlHcm91cFNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeSBHcm91cHMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCByZWYgJFBhcmFte0dyb3Vwc30gbmUgJ0FSUkFZJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkdyb3VwcyBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIGFuZCB0aGVpciBpZHMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBsb29rdXAgaGFzaCBmb3IgdGhlIGNhdGVnb3J5IGlkCiAgICBteSAlRkFRMklEID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICMgbG9va3VwIHRoZSBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRMklEeyAkUGFyYW17Q2F0ZWdvcnl9IH07CgogICAgIyBsb29rdXAgdGhlIGdyb3VwIGlkcwogICAgbXkgQEdyb3VwSURzOwogICAgZm9yIG15ICRHcm91cCAoIEB7ICRQYXJhbXtHcm91cHN9IH0gKSB7CiAgICAgICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICRHcm91cCwKICAgICAgICApOwogICAgICAgIHB1c2ggQEdyb3VwSURzLCAkR3JvdXBJRDsKICAgIH0KCiAgICAjIHNldCBjYXRlZ29yeSBncm91cAogICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIEdyb3VwSURzICAgPT4gXEBHcm91cElEcywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0R5bmFtaWNGaWVsZHNEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBkeW5hbWljIGZpZWxkcyBmb3IgRkFRCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyk7CgogICAgIyBnZXQgdGhlIGxpc3Qgb2YgRkFRIGR5bmFtaWMgZmllbGRzICh2YWxpZCBhbmQgaW52YWxpZCBvbmVzKQogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICBPYmplY3RUeXBlID0+IFsnRkFRJ10sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBkeW5hbWljIGZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgIyBkZWxldGUgYWxsIGZpZWxkIHZhbHVlcwogICAgICAgIG15ICRWYWx1ZXNEZWxldGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIEZpZWxkSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdmFsdWVzIGNvdWxkIGJlIGRlbGV0ZWQKICAgICAgICBpZiAoJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MpIHsKCiAgICAgICAgICAgICMgZGVsZXRlIGZpZWxkCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAgICAgSUQgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGVsZXRlIGR5bmFtaWMgZmllbGQgJyREeW5hbWljRmllbGQtPntOYW1lfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdmFsdWVzIGNvdWxkIG5vdCBiZSBkZWxldGVkCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGVsZXRlIHZhbHVlcyBmb3IgZHluYW1pYyBmaWVsZCAnJER5bmFtaWNGaWVsZC0+e05hbWV9JyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlRFRMSW5TeXNDb25maWcgewoKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRQcm92aWRlck9iamVjdCAgPSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyLT5uZXcoKTsKCiAgICAjIEdldCBzZXR0aW5nJ3MgY29udGVudC4KICAgIG15ICRTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgISRTZXR0aW5nOwoKICAgIG15IEBOZXdTZXR0aW5nczsKCiAgICBNRU5VTU9EVUxFOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICBTRVRUSU5HSVRFTToKICAgICAgICBmb3IgbXkgJFNldHRpbmdJdGVtICggc29ydCBrZXlzICV7ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9IH0gKSB7CgogICAgICAgICAgICBteSAkU2V0dGluZ0NvbnRlbnQgPSAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eyRTZXR0aW5nSXRlbX07CgogICAgICAgICAgICAjIERvIG5vdGhpbmcgbm8gdmFsdWUgZm9yIG1pZ3JhdGluZy4KICAgICAgICAgICAgbmV4dCBTRVRUSU5HSVRFTSBpZiAhJFNldHRpbmdDb250ZW50OwoKICAgICAgICAgICAgbXkgJFRUQ29udGVudDsKICAgICAgICAgICAgZXZhbCB7CiAgICAgICAgICAgICAgICAkVFRDb250ZW50ID0gJFByb3ZpZGVyT2JqZWN0LT5NaWdyYXRlRFRMdG9UVCggQ29udGVudCA9PiAkU2V0dGluZ0NvbnRlbnQgKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkTWVudU1vZHVsZS0+JFNldHRpbmdJdGVtIDogJEAhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eyRTZXR0aW5nSXRlbX0gPSAkVFRDb250ZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAiRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIyRNZW51TW9kdWxlIiwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnskTWVudU1vZHVsZX0sCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ0RlcGxveSBGQVEgbWVudSBtb2R1bGUuJywKICAgICAgICBTZXR0aW5ncyA9PiBcQE5ld1NldHRpbmdzLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgTWlncmF0ZSBGQVEgbWVudSBtb2R1bGVzLgogICAgIyBHZXQgc2V0dGluZyBjb250ZW50IGZvciBGQVEgbWVudSBtb2R1bGVzLgogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKCiAgICBteSBATmV3U2V0dGluZ3M7CiAgICBNRU5VTU9EVUxFOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICAjIFVwZGF0ZSBtb2R1bGUgbG9jYXRpb24uCiAgICAgICAgbXkgJE1vZHVsZSA9ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LT57J01vZHVsZSd9OwogICAgICAgIGlmICggJE1vZHVsZSAhfiBte0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51KFx3Kyl9ICkgewogICAgICAgICAgICBuZXh0IE1FTlVNT0RVTEU7CiAgICAgICAgfQoKICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWMiOwoKICAgICAgICAjIEJ1aWxkIG5ldyBzZXR0aW5nLgogICAgICAgIHB1c2ggQE5ld1NldHRpbmdzLCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjJyAuICRNZW51TW9kdWxlLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZy0+eyRNZW51TW9kdWxlfSwKICAgICAgICB9OwogICAgfQoKICAgICMgTWlncmF0ZSBGQVEgY29uZmlnIGl0ZW1zLgogICAgbXkgQENvbmZpZ3MgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzMtRkFRU2VhcmNoJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkFnZW50RkFRU2VhcmNoJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzMtRkFRU2VhcmNoJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkN1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHVibGljRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICczLUZBUVNlYXJjaCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJ0ZBUScsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdTbWFsbCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdTbWFsbCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdGQVFPdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbFBhZ2VTaG93bicsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICcwMzk4LUZBUS1MYXN0Q2hhbmdlJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6RkFRJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzAzOTktRkFRLUxhc3RDcmVhdGUnLAogICAgICAgICAgICBNb2R1bGUgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpGQVEnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6VG9vbEJhck1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzkwLUZBUTo6QWdlbnRGQVFBZGQnLAogICAgICAgICAgICBNb2R1bGUgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6VG9vbEJhcjo6TGluaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnIChAQ29uZmlncykgewoKICAgICAgICAjIEdldCBzZXR0aW5nIGNvbnRlbnQgZm9yIGhlYWRlciBtZXRhIEZBUSBzZWFyY2guCiAgICAgICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRDb25maWctPntOYW1lfSApOwogICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAhJFNldHRpbmc7CgogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZy0+e0NvbmZpZ0l0ZW19OwogICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAhJFNldHRpbmctPnskQ29uZmlnSXRlbX0tPnsnTW9kdWxlJ307CgogICAgICAgICMgU2V0IG1vZHVsZS4KICAgICAgICAkU2V0dGluZy0+eyRDb25maWdJdGVtfS0+eydNb2R1bGUnfSA9ICRDb25maWctPntNb2R1bGV9OwoKICAgICAgICAjIEJ1aWxkIG5ldyBzZXR0aW5nLgogICAgICAgIHB1c2ggQE5ld1NldHRpbmdzLCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRDb25maWctPntOYW1lfSAuICcjIyMnIC4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57JENvbmZpZ0l0ZW19LAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIUBOZXdTZXR0aW5nczsKCiAgICAjIFdyaXRlIG5ldyBzZXR0aW5nLgogICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnRkFRIC0gcGFja2FnZSBzZXR1cCBmdW5jdGlvbjogX01pZ3JhdGVDb25maWdzJywKICAgICAgICBTZXR0aW5ncyA9PiBcQE5ld1NldHRpbmdzLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9TZXRDb250ZW50VHlwZSB7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRQ29udGVudFR5cGVTZXQoKTsKfQoKc3ViIF9HZXRPVE9CTzVDb25maWdCYWNrdXAgewogICAgbXkgJENvbmZpZyA9IHt9OwoKICAgIG15ICRGaWxlQ2xhc3MgPSAnS2VybmVsOjpDb25maWc6OkJhY2t1cHM6OlpaWkF1dG9PVE9CTzUnOwogICAgZGVsZXRlICRJTkN7JEZpbGVDbGFzc307CgogICAgaWYgKAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoCiAgICAgICAgICAgICRGaWxlQ2xhc3MsCiAgICAgICAgICAgIFNpbGVudCA9PiAxLAogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEZpbGVDbGFzcy0+TG9hZCgkQ29uZmlnKTsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZzsKfQoKc3ViIF9NaWdyYXRlUGVybWlzc2lvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT2xkQ29uZmlnID0gJFNlbGYtPl9HZXRPVE9CTzVDb25maWdCYWNrdXAoKTsKICAgIG15ICROZXdDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRHZXRDb25maWcgPSBzdWIgewogICAgICAgIG15ICRTb3VyY2UgICAgICA9IHNoaWZ0OwogICAgICAgIG15ICRTZXR0aW5nTmFtZSA9IHNoaWZ0OwoKICAgICAgICBteSAkQ29uZmlnID0gJFNvdXJjZTsKICAgICAgICBteSBAS2V5cyAgID0gc3BsaXQgJyMjIycsICRTZXR0aW5nTmFtZTsKICAgICAgICB3aGlsZSAoIG15ICRLZXkgPSBzaGlmdCBAS2V5cyApIHsKICAgICAgICAgICAgJENvbmZpZyA9ICRDb25maWctPnskS2V5fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkQ29uZmlnOwogICAgfTsKCiAgICBteSBATmV3U2V0dGluZ3MgICAgICAgPSAoKTsKICAgIG15IEBTZXR0aW5nc1RvTWlncmF0ZSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFeHBsb3JlcicsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICAgPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIE5hdkJhciAgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRkFRJywKICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgICA9PiAnSXRlbUFyZWEnLAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRXhwbG9yZXInLAogICAgICAgICAgICAgICAgICAgICAgICBCbG9jayAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICA9PiBbJ2ZhcV9hZG1pbiddLAogICAgICAgICAgICAgICAgTmF2QmFyID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICdMYW5ndWFnZSBNYW5hZ2VtZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwID0+IFsnZmFxX2FkbWluJ10sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRWRpdCcsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwID0+IFsnZmFxJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQWRkJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICBOYXZCYXIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ05ldycsCiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cCA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgID0+IFsnZmFxX2FkbWluJ10sCiAgICAgICAgICAgICAgICBOYXZCYXIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0NhdGVnb3J5IE1hbmFnZW1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICBCbG9jayA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgPT4gWydmYXFfYWRtaW4nXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2gnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiB7CiAgICAgICAgICAgICAgICBHcm91cCAgID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICBOYXZCYXIgID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ1NlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2hTbWFsbCcsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICAgPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFab29tJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgICA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVJpY2hUZXh0JywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgICA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVByaW50JywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgPT4gWydmYXEnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFKb3VybmFsJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgICA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgTmF2QmFyICA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdKb3VybmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRSGlzdG9yeScsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICAgPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFEZWxldGUnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiB7CiAgICAgICAgICAgICAgICBHcm91cCA9PiBbJ2ZhcSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMzk4LUZBUS1MYXN0Q2hhbmdlJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgPT4gJ2ZhcScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzAzOTktRkFRLUxhc3RDcmVhdGUnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiB7CiAgICAgICAgICAgICAgICBHcm91cCA9PiAnZmFxJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGQVE6OkFwcHJvdmFsR3JvdXAnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiAnZmFxX2FwcHJvdmFsJywKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIFNFVFRJTkc6CiAgICBmb3IgbXkgJFNldHRpbmcgKEBTZXR0aW5nc1RvTWlncmF0ZSkgewogICAgICAgIG15ICRTZXR0aW5nT2xkQ29uZmlnID0gJEdldENvbmZpZy0+KCAkT2xkQ29uZmlnLCAkU2V0dGluZy0+e05hbWV9LCApOwogICAgICAgIG15ICRTZXR0aW5nRGVmYXVsdHMgID0gJFNldHRpbmctPntEZWZhdWx0c307CgogICAgICAgIGlmICggJFNldHRpbmctPntOYW1lfSBlcSAnRkFROjpBcHByb3ZhbEdyb3VwJyApIHsKCiAgICAgICAgICAgIG15ICRFZmZlY3RpdmVWYWx1ZSA9ICRTZXR0aW5nT2xkQ29uZmlnIC8vICRTZXR0aW5nRGVmYXVsdHM7CgogICAgICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRFZmZlY3RpdmVWYWx1ZSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBuZXh0IFNFVFRJTkc7CiAgICAgICAgfQoKICAgICAgICBteSBAR3JvdXBHcm91cFJvID0gcXcoIEdyb3VwIEdyb3VwUm8gKTsKCiAgICAgICAgewogICAgICAgICAgICBteSAkTmV3U2V0dGluZyA9ICRHZXRDb25maWctPiggJE5ld0NvbmZpZywgJFNldHRpbmctPntOYW1lfSApOwoKICAgICAgICAgICAgIyBDaGVjayBmb3IgR3JvdXBHcm91cFJvLgogICAgICAgICAgICBmb3IgbXkgJEtleSAoQEdyb3VwR3JvdXBSbykgewogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZXR0aW5nT2xkQ29uZmlnLT57JEtleX0gfHwgZGVmaW5lZCAkU2V0dGluZ0RlZmF1bHRzLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1NldHRpbmctPnskS2V5fSA9ICRTZXR0aW5nT2xkQ29uZmlnLT57JEtleX0gLy8gJFNldHRpbmdEZWZhdWx0cy0+eyRLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICROZXdTZXR0aW5nLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIE5hdkJhciA9PiBOYXZpZ2F0aW9uLgogICAgICAgIGlmICggJFNldHRpbmdPbGRDb25maWctPntOYXZCYXJ9IHx8ICRTZXR0aW5nRGVmYXVsdHMtPntOYXZCYXJ9ICkgewogICAgICAgICAgICBteSAoIHVuZGVmLCAkRnJvbnRlbmQgKSA9IHNwbGl0ICcjIyMnLCAkU2V0dGluZy0+e05hbWV9OwogICAgICAgICAgICBteSAkTmV3U2V0dGluZyA9ICRHZXRDb25maWctPiggJE5ld0NvbmZpZywgIkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjJHsgRnJvbnRlbmQgfSIgKTsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCBzb3J0IGtleXMgJXskTmV3U2V0dGluZ30gKSB7CiAgICAgICAgICAgICAgICBteSAkTmV3SXRlbXMgPSAkTmV3U2V0dGluZy0+eyRJbmRleH07CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5ld0l0ZW0gKCBAeyROZXdJdGVtc30gKSB7CgogICAgICAgICAgICAgICAgICAgIFNPVVJDRToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNvdXJjZSAoICggJFNldHRpbmdPbGRDb25maWctPntOYXZCYXJ9LCAkU2V0dGluZ0RlZmF1bHRzLT57TmF2QmFyfSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkT2xkSXRlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBMaXN0OjpVdGlsOjpmaXJzdCB7ICRfLT57TmFtZX0gZXEgJE5ld0l0ZW0tPntOYW1lfSAmJiAkXy0+e0Jsb2NrfSBlcSAkTmV3SXRlbS0+e0Jsb2NrfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIEB7JFNvdXJjZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU09VUkNFIGlmICEkT2xkSXRlbTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChAR3JvdXBHcm91cFJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJE9sZEl0ZW0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3SXRlbS0+eyRLZXl9ID0gJE9sZEl0ZW0tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFNPVVJDRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBATmV3U2V0dGluZ3MsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAiRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyMkeyBGcm9udGVuZCB9IyMjJHsgSW5kZXggfSIsCiAgICAgICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJE5ld1NldHRpbmctPnskSW5kZXh9LAogICAgICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgRGVwbG95IHRoZSBuZXcgc2V0dGluZ3MuCiAgICBteSAkU2V0dGluZ3NEZXBsb3llZCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ0ZBUSAtIHBhY2thZ2Ugc2V0dXAgZnVuY3Rpb246IF9NaWdyYXRlUGVybWlzc2lvbnMnLAogICAgICAgIFNldHRpbmdzID0+IFxATmV3U2V0dGluZ3MsCiAgICApOwogICAgaWYgKCAhJFNldHRpbmdzRGVwbG95ZWQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBkZXBsb3lpbmcgdGhlIG1pZ3JhdGVkIHBlcm1pc3Npb25zISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdG9ib19zdGF0cz4KPENhY2hlPjA8L0NhY2hlPgo8RGVzY3JpcHRpb24+U2hvd3MgYW4gb3ZlcnZpZXcgb2YgRkFRIGFydGljbGVzIGluIGEgZGVmaW5lZCB0aW1lIHBlcmlvZCBzb3J0ZWQgYnkgYWNjZXNzIG51bWJlcnMuPC9EZXNjcmlwdGlvbj4KPEZvcm1hdD5DU1Y8L0Zvcm1hdD4KPEZvcm1hdD5QcmludDwvRm9ybWF0Pgo8R3JhcGhTaXplPjwvR3JhcGhTaXplPgo8T2JqZWN0PjwvT2JqZWN0Pgo8T2JqZWN0TW9kdWxlPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpGQVFBY2Nlc3M8L09iamVjdE1vZHVsZT4KPFBlcm1pc3Npb24+c3RhdHM8L1Blcm1pc3Npb24+CjxTdGF0VHlwZT5zdGF0aWM8L1N0YXRUeXBlPgo8U3VtQ29sPjA8L1N1bUNvbD4KPFN1bVJvdz4wPC9TdW1Sb3c+CjxUaXRsZT5GQVEgYWNjZXNzIG92ZXJ2aWV3PC9UaXRsZT4KPFZhbGlkPjE8L1ZhbGlkPgo8L290b2JvX3N0YXRzPgo=
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IG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE5LTExLTAxVDAzOjA2OjQ4WjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTExLTAxVDAzOjA2OjQ4WjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMTktMTEtMDFUMDM6MDY6NDhaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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L0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA5LjggMjU4LjQwOSA0NjYuNDIgMjY4LjM5OSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMSAwIG9iago8PCAvVVJJIChodHRwOi8vbG9jYWxob3N0L290b2JvL2luZGV4LnBsP0FjdGlvbj1BZG1pbkZBUUV4cGxvcmVyO0NhdGVnb3J5PU1pc2MpCi9TIC9VUkkgPj4KZW5kb2JqCjMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDk2LjU2IDIzNi44NjEgNDU4LjI2IDI0Ni44NTEgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzMgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdG9iby9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeT1NeSUyMENhdGVnb3J5KQovUyAvVVJJID4+CmVuZG9iagozNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDE5My43NjUgNDk4Ljg0IDIwMy43NTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzUgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdG9iby9pbmRleC5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeT1HcmFuUGFyZW50OjpQYXJlbnQ6OlNvbikKL1MgL1VSSSA+PgplbmRvYmoKMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAxNzIuMjE3IDE4MS40NyAxODIuMjA3IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3IDAgb2JqCjw8IC9UeXBlIC9B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ZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNjAgMCBSCj4+CmVuZG9iago2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjg1OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxODMuNzM5IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2NTUuNjI5IDU0MC4yMDggNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDY0NS44MTkgbnVsbF0KPj4KZW5kb2JqCjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMjAwLjk1MSA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA1OTAuODM4IG51bGxdCj4+CmVuZG9iago3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE3OS4yMTMgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NSAwIFIKL0ggL0kKCj4+CmVuZG9iago3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYzMS42MjkgNTM5Ljk5OCA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNTM1Ljg1NyBudWxsXQo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjE5LjYyOSAyMDUuNTQ0IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzggMCBSCi9IIC9JCgo+PgplbmRvYmoKODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2MTkuNjI5IDUzOS45OTggNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3OCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDQ4MC44NzYgbnVsbF0KPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMjc3LjYzNyA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjA3LjYyOSA1MzkuOTk4IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA0MDEuODk1IG51bGxdCj4+CmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1OTUuNjI5IDM0NS4wNTUgNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTExIDU5NS42MjkgNTQwLjg3MSA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMzQ2LjkxNCBudWxsXQo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTgzLjYyOSAxOTIuODE1IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1ODMuNjI5IDUzOS45OTggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDI5MS45MzMgbnVsbF0KPj4KZW5kb2JqCjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3MS42MjkgMjUyLjk2OCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTcxLjYyOSA1MzkuOTk4IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAyMzYuOTUyIG51bGxdCj4+CmVuZG9iago5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NTkuNjI5IDE5My43NjcgNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MyAwIFIKL0ggL0kKCj4+CmVuZG9iago5NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU1OS42MjkgNTM5Ljk5OCA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMTgxLjk3MSBudWxsXQo+PgplbmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQ3LjYyOSAyODcuODIgNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTY4IDU0Ny42MjkgNTQwLjkyOCA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMTI2Ljk5IG51bGxdCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTM1LjYyOSA0MTkuNiA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDUzNS42MjkgNTQwLjM0OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTIzLjYyOSAzMTYuODk2IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUyMy42MjkgNTM5Ljk5OCA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDQgMCBSIC9YWVogNzIuMCA2NzIuMDUyIG51bGxdCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAyMTMuNTkgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTExLjYyOSA1MzkuOTk4IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDYzMC4zNzUgbnVsbF0KPj4KZW5kb2JqCjEwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0OTkuNjI5IDI5NC43ODIgNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDk5LjYyOSA1MzkuOTk4IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDU3Ni42OTggbnVsbF0KPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODcuNjI5IDIyNS4wMDEgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDggNDg3LjYyOSA1NDAuMTY4IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDUyMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDMyNC4xNDQgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDc1LjYyOSA1MzkuOTk4IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDEyNS42NjQgbnVsbF0KPj4KZW5kb2JqCjExOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjMuNjI5IDM5MC4wMiA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NjMuNjI5IDUzOS45OTggNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgMjQyLjQzNSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQzOS42MjkgMjA0Ljk3NiA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MzkuNjI5IDUzOS45OTggNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MjcuNjI5IDE3My40MDggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDI3LjYyOSA1MzkuOTk4IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NyAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDE1LjYyOSAxNjQuOTEzIDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDQxNS42MjkgNTQwLjE2NyA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDcgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKMTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQwMy42MjkgMjA5LjU1MiA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MDMuNjI5IDUzOS45OTggNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjEzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDIyMS43OTQgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzkxLjYyOSA1MzkuOTk4IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzNzkuNjI5IDE0OS4zOSAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNzkuNjI5IDUzOS45OTggMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUzIDAgUiAvWFlaIDcyLjAgNjQ0LjggbnVsbF0KPj4KZW5kb2JqCjE0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDE5OS4wMDYgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzY3LjYyOSA1MzkuOTk4IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDU2OC40IG51bGxdCj4+CmVuZG9iagoxNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAxOTQuNjQxIDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM1NS42MjkgNTM5Ljk5OCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMzQzLjYyOSAxNjEuNzg0IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM0My42MjkgNTM5Ljk5OCAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMzMS42MjkgMTU3LjUxMSAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMzEuNjI5IDUzOS45OTggMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNjQ2LjExOSBudWxsXQo+PgplbmRvYmoKMTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxOS42MjkgNDM5LjQwNSAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMTkuNjI5IDUzOS45OTggMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNTgzLjY2MiBudWxsXQo+PgplbmRvYmoKMTU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwNy42MjkgNDIzLjQzNCAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyAzMDcuNjI5IDU0MC4yMDcgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNTIxLjIwNSBudWxsXQo+PgplbmRvYmoKMTYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI5NS42MjkgNDA1LjU5OCAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAyOTUuNjI5IDUzOS45OTggMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNDU4Ljc0OCBudWxsXQo+PgplbmRvYmoKMTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4My42MjkgNDU3LjU4OSAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyODMuNjI5IDUzOS45OTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgMzk2LjI5MSBudWxsXQo+PgplbmRvYmoKMTY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3MS42MjkgNDE2Ljg5IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDI3MS42MjkgNTM5Ljk5OCAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAzMzMuODM0IG51bGxdCj4+CmVuZG9iagoxNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjU5LjYyOSA0MTEuMzkzIDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDI1OS42MjkgNTM5Ljk5OCAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAyNzEuMzc3IG51bGxdCj4+CmVuZG9iagoxNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQ3LjYyOSA1MDguNzA1IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTA1IDI0Ny42MjkgNTQwLjI2NSAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAyMDguOTIgbnVsbF0KPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMzUuNjI5IDUwMS4yNTQgMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MTggMjM1LjYyOSA1MzkuOTc4IDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDE0Ni40NjMgbnVsbF0KPj4KZW5kb2JqCjE3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMjMuNjI5IDM4Ny43MDUgMjMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMjIzLjYyOSA1NDAuMzQ4IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDY5Ni4wIG51bGxdCj4+CmVuZG9iagoxODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjExLjYyOSAzODkuMDI5IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDIxMS42MjkgNTQwLjM0OCAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA1OTkuMDQgbnVsbF0KPj4KZW5kb2JqCjE4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTkuNjI5IDMzOS41NDYgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTk5LjYyOSA1MzkuOTk4IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDUzOC4wOCBudWxsXQo+PgplbmRvYmoKMTg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE4Ny42MjkgMjc3Ljc4NyAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxODcuNjI5IDUzOS45OTggMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5IDAgUiAvWFlaIDcyLjAgNDc3LjEyIG51bGxdCj4+CmVuZG9iagoxOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTc1LjYyOSAyNjEuNzA0IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE3NS42MjkgNTM5Ljk5OCAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA0MTYuMTYgbnVsbF0KPj4KZW5kb2JqCjE5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNjMuNjI5IDI2NC4xMDQgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTYzLjYyOSA1MzkuOTk4IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDM1NS4yIG51bGxdCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTUxLjYyOSAyNzUuNzA1IDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE1MS42MjkgNTM5Ljk5OCAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAyOTQuMjQgbnVsbF0KPj4KZW5kb2JqCjE5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzkuNjI5IDI4NC45MDggMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMTM5LjYyOSA1NDAuMzQ4IDE0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDIzMy4yOCBudWxsXQo+PgplbmRvYmoKMjAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyNy42MjkgMzIzLjkwNCAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4OCAxMjcuNjI5IDU0MC4zNDggMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5IDAgUiAvWFlaIDcyLjAgMTcyLjMyIG51bGxdCj4+CmVuZG9iagoyMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTE1LjYyOSAyOTUuMjA1IDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDExNS42MjkgNTQwLjM0OCAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjIwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDMuNjI5IDI5OC4zOTEgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMTAzLjYyOSA1NDAuMzQ4IDExMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoyMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTEuNjI5IDI4NC4wNjIgMTAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggOTEuNjI5IDU0MC4zNDggMTAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsg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IC9MaW5rCi9SZWN0IFsgMTI4LjAgNzA5LjAwNSAzNjMuODk0IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDcwOS4wMDUgNTM5Ljk5OCA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCA1MTcuMjAzIG51bGxdCj4+CmVuZG9iagoyMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjk3LjAwNSAyOTYuNDk4IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY5Ny4wMDUgNTM5Ljk5OCA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjIgMCBSIC9YWVogNzIuMCA0NTMuNjA0IG51bGxdCj4+CmVuZG9iagoyNDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjg1LjAwNSAyNzkuNDEgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjg1LjAwNSA1MzkuOTk4IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDM5MC4wMDUgbnVsbF0KPj4KZW5kb2JqCjI0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NzMuMDA1IDM0Ny4wNzUgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjczLjAwNSA1MzkuOTk4IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDMyNi40MDYgbnVsbF0KPj4KZW5kb2JqCjI0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NjEuMDA1IDMyNy42NzYgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjYxLjAwNSA1MzkuOTk4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDI2Mi44MDcgbnVsbF0KPj4KZW5kb2JqCjI1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NDkuMDA1IDI1Ni42NTYgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQ5LjAwNSA1MzkuOTk4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDE5OS4yMDggbnVsbF0KPj4KZW5kb2JqCjI1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDM3NS40NTYgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNjM3LjAwNSA1NDAuMjA4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDEzNS42MDkgbnVsbF0KPj4KZW5kb2JqCjI1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MjUuMDA1IDQxNi41MDMgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDcgNjI1LjAwNSA1NDAuMjA3IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgMzI1LjU5NiA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2MTMuMDA1IDU0MC4yMDggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDY2NC40NDQgbnVsbF0KPj4KZW5kb2JqCjI2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MDEuMDA1IDMyNi44NjEgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNjAxLjAwNSA1NDAuMjA4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCA2MDMuMDIxIG51bGxdCj4+CmVuZG9iagoyNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTg5LjAwNSA0MTkuOTc4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDU4OS4wMDUgNTQwLjIwOCA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNTQxLjU5OCBudWxsXQo+PgplbmRvYmoKMjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU3Ny4wMDUgMzIwLjU4NyA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1NzcuMDA1IDU0MC4yMDggNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDQ4MC4xNzUgbnVsbF0KPj4KZW5kb2JqCjI3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NjUuMDA1IDMyMS44NTIgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTY1LjAwNSA1NDAuMjA4IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCA0MTguNzUyIG51bGxdCj4+CmVuZG9iagoyNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTUzLjAwNSA0MTQuOTY5IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDU1My4wMDUgNTQwLjIwOCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgMzU3LjMyOSBudWxsXQo+PgplbmRvYmoKMjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU0MS4wMDUgMjg5LjkxNiA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1NDEuMDA1IDU0MC4yMDggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDI5NS45MDYgbnVsbF0KPj4KZW5kb2JqCjI4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDMzMC4zNjYgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTI5LjAwNSA1NDAuMjA4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAyMzQuNDgzIG51bGxdCj4+CmVuZG9iagoyODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTE3LjAwNSAyOTYuMjQgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTE3LjAwNSA1NDAuMjA4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAxNzMuMDYgbnVsbF0KPj4KZW5kb2JqCjI4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MDUuMDA1IDI5Ny41MDQgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTA1LjAwNSA1NDAuMjA4IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAxMTEuNjM3IG51bGxdCj4+CmVuZG9iagoyOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDkzLjAwNSAzOTAuNjIyIDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDQ5My4wMDUgNTQwLjIwOCA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjI5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0ODEuMDA1IDIzMS45NTQgNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDgxLjAwNSA1MzkuOTk4IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA2NDUuMzM1IG51bGxdCj4+CmVuZG9iagoyOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDY5LjAwNSAzOTcuNzI1IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ2OS4wMDUgNTM5Ljk5OCA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgNTgyLjY3IG51bGxdCj4+CmVuZG9iagoyOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDU3LjAwNSA0MDUuMzQzIDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ1Ny4wMDUgNTM5Ljk5OCA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgNTA4LjAwNSBudWxsXQo+PgplbmRvYmoKMzAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ0NS4wMDUgNDAxLjM3IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ0NS4wMDUgNTM5Ljk5OCA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgNDMzLjM0IG51bGxdCj4+CmVuZG9iagozMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDMzLjAwNSAzOTcuNzE1IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQzMy4wMDUgNTM5Ljk5OCA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMzcwLjY3NSBudWxsXQo+PgplbmRvYmoKMzA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQyMS4wMDUgNDA1LjMzMyA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MjEuMDA1IDUzOS45OTggNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzEwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDI5Ni4wMSBudWxsXQo+PgplbmRvYmoKMzExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQwOS4wMDUgNDAxLjM2IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQwOS4wMDUgNTM5Ljk5OCA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxMCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMjIxLjM0NSBudWxsXQo+PgplbmRvYmoKMzE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM5Ny4wMDUgNDI0LjU5MyA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxMyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjY1OCAzOTcuMDA1IDU0MC4zNzggNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzE2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDE0Ni42OCBudWxsXQo+PgplbmRvYmoKMzE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgNDEyLjEwNSAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAzODUuMDA1IDU0MC4yMDggMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzE5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagozMjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzczLjAwNSA0MjMuMzY4IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDM3My4wMDUgNTQwLjIwOCAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxOSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgNjUzLjEwMiBudWxsXQo+PgplbmRvYmoKMzIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgNDYwLjI2MSAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4NyAzNjEuMDA1IDU0MC4yMDcgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDU5Mi41MzQgbnVsbF0KPj4KZW5kb2JqCjMyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDkuMDA1IDQyOC42OTUgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzQ5LjAwNSA1NDAuMjA4IDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA1MzEuOTY2IG51bGxdCj4+CmVuZG9iagozMjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzM3LjAwNSAzOTQuOTg3IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDMzNy4wMDUgNTQwLjIwOCAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyOCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgNDU5LjM5OCBudWxsXQo+PgplbmRvYmoKMzMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMyNS4wMDUgNDA1LjQxNCAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYxOCAzMjUuMDA1IDU0MC4zMzggMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDM5OC44MyBudWxsXQo+PgplbmRvYmoKMzM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxMy4wMDUgNDE2LjI5NyAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCAzMTMuMDA1IDU0MC4xNjggMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDMyNi4yNjIgbnVsbF0KPj4KZW5kb2JqCjMzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDM4Ny45MTcgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMzAxLjAwNSA1NDAuMTY4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCAyNTMuNjk0IG51bGxdCj4+CmVuZG9iagozNDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjg5LjAwNSA0MDEuMzUgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjg5LjAwNSA1MzkuOTk4IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCAxOTMuMTI2IG51bGxdCj4+CmVuZG9iagozNDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSA0OTQuMjU3IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc2IDI3Ny4wMDUgNTM5Ljk5NiAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMTMyLjU1OCBudWxsXQo+PgplbmRvYmoKMzQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI2NS4wMDUgNDczLjU2NCAyNzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyAyNjUuMDA1IDUzOS45OTcgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagozNTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjUzLjAwNSA0OTAuMTg0IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDI1My4wMDUgNTM5Ljk5NyAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNjY0LjQ0NCBudWxsXQo+PgplbmRvYmoKMzUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDUgNDQ4Ljk5OSAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNDEuMDA1IDUzOS45OTggMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzU1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDYwMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjM1NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMjkuMDA1IDQ5Ny44IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMTcuMDA1IDE1NS45OCAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI4IDIxNy4wMDUgNTQwLjAgMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDU0MS41OTggbnVsbF0KPj4KZW5kb2JqCjM2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMDUuMDA1IDQ3My4zNCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTkzLjAwNSAxNzQuNzcgMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yOCAxOTMuMDA1IDU0MC4wIDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA0ODAuMTc1IG51bGxdCj4+CmVuZG9iagozNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSA0OTIuNzcgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE2OS4wMDUgMTU1Ljk4IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjggMTY5LjAwNSA1NDAuMCAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNDE4Ljc1MiBudWxsXQo+PgplbmRvYmoKMzY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE1Ny4wMDUgNTExLjQ5NSAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI5NCAxNTcuMDA1IDU0MC4wMTQgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzcwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDM1Ny4zMjkgbnVsbF0KPj4KZW5kb2JqCjM3MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNDUuMDA1IDQ1NC44NDMgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMTQ1LjAwNSA1MzkuOTk3IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAyOTUuOTA2IG51bGxdCj4+CmVuZG9iagozNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTMzLjAwNSA0NzcuMjA5IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDEzMy4wMDUgNTM5Ljk5NyAxNDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMjM0LjQ4MyBudWxsXQo+PgplbmRvYmoKMzc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgNDcxLjQgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEwOS4wMDUgMTc2LjEyIDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjggMTA5LjAwNSA1NDAuMCAxMTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMTczLjA2IG51bGxdCj4+CmVuZG9iagozODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDQ1MS40MTkgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggOTcuMDA1IDUzOS45OTggMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDExMS42MzcgbnVsbF0KPj4KZW5kb2JqCjM4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjgu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Mjk0IDAgUgoyOTYgMCBSCjI5NyAwIFIKMjk5IDAgUgozMDAgMCBSCjMwMiAwIFIKMzAzIDAgUgozMDUgMCBSCjMwNiAwIFIKMzA4IDAgUgozMDkgMCBSCjMxMSAwIFIKMzEyIDAgUgozMTQgMCBSCjMxNSAwIFIKMzE3IDAgUgozMTggMCBSCjMyMCAwIFIKMzIxIDAgUgozMjMgMCBSCjMyNCAwIFIKMzI2IDAgUgozMjcgMCBSCjMyOSAwIFIKMzMwIDAgUgozMzIgMCBSCjMzMyAwIFIKMzM1IDAgUgozMzYgMCBSCjMzOCAwIFIKMzM5IDAgUgozNDEgMCBSCjM0MiAwIFIKMzQ0IDAgUgozNDUgMCBSCjM0NyAwIFIKMzQ4IDAgUgozNTAgMCBSCjM1MSAwIFIKMzUzIDAgUgozNTQgMCBSCjM1NiAwIFIKMzU3IDAgUgozNTggMCBSCjM2MCAwIFIKMzYxIDAgUgozNjIgMCBSCjM2NCAwIFIKMzY1IDAgUgozNjYgMCBSCjM2OCAwIFIKMzY5IDAgUgozNzEgMCBSCjM3MiAwIFIKMzc0IDAgUgozNzUgMCBSCjM3NyAwIFIKMzc4IDAgUgozNzkgMCBSCjM4MSAwIFIKMzgyIDAgUgozODQgMCBSCjM4NSAwIFIKMzg3IDAgUgozODggMCBSCl0KZW5kb2JqCjM5MiAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMzkxIDAgUgogIC9Db250ZW50cyAzODkgMCBSCj4+CmVuZG9iagozOTMgMCBvYmoKPDwgL0xlbmd0aCAzOTQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nO1aS2/cNhC+76/gHwhDDt9AsMCuN1u0t6IGeghyStH2ELfwqX+/HJJDURKl1dpOYieOoYgih8N5fnws73eSifj3Bl8uAPt0t7svdZI5YMqOq6SxTAnujRVCxqbcU9Ar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NzA5LjAwNSA0MzMuNjYyIDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDcwOS4wMDUgNTM5Ljk5NyA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQwOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgNTgzLjU4NCBudWxsXQo+PgplbmRvYmoKNDEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY5Ny4wMDUgNDUyLjA4NiA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQxMSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2OTcuMDA1IDUzOS45OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDUyMS4zNzYgbnVsbF0KPj4KZW5kb2JqCjQxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDQ5MS41MzggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgNjg1LjAwNSA1MzkuOTk3IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCA0NTkuMTY4IG51bGxdCj4+CmVuZG9iago0MTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSA0MTIuNjQyIDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY3My4wMDUgNTM5Ljk5OCA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQxNyAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMzk2Ljk2IG51bGxdCj4+CmVuZG9iago0MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSA0MTcuMTQ0IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDY2MS4wMDUgNTQwLjE2OCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMzIyLjc1MiBudWxsXQo+PgplbmRvYmoKNDI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgNDY2LjkwMiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMyAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA2NDkuMDA1IDUzOS45OTcgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDI2MC41NDQgbnVsbF0KPj4KZW5kb2JqCjQyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDQwNC42NTYgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCAxODYuMzM2IG51bGxdCj4+CmVuZG9iago0MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSA0MTUuOTE4IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYyNS4wMDUgNTM5Ljk5OCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyOSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMTEyLjEyOCBudWxsXQo+PgplbmRvYmoKNDMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgNDIxLjI0NiA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzMiAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MTMuMDA1IDUzOS45OTggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDM1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5NSAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago0MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjAxLjAwNSAzODcuNTM4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYwMS4wMDUgNTM5Ljk5OCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzNSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNjM1LjA0IG51bGxdCj4+CmVuZG9iago0MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTg5LjAwNSA0MDcuMTQ1IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU4OS4wMDUgNTM5Ljk5OCA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNTc0LjA4IG51bGxdCj4+CmVuZG9iago0NDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSAzODcuMTk5IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU3Ny4wMDUgNTM5Ljk5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNTEzLjEyIG51bGxdCj4+CmVuZG9iago0NDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTY1LjAwNSAzNzEuNDA2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU2NS4wMDUgNTM5Ljk5OCA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNDUyLjE2IG51bGxdCj4+CmVuZG9iago0NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTUzLjAwNSA0NDMuNDc0IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjU4IDU1My4wMDUgNTQwLjM3OCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgMzc5LjIgbnVsbF0KPj4KZW5kb2JqCjQ1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NDEuMDA1IDQzMC45ODYgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNTQxLjAwNSA1NDAuMjA4IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAzMDYuMjQgbnVsbF0KPj4KZW5kb2JqCjQ1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDQ2My41NTcgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODcgNTI5LjAwNSA1NDAuMjA3IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAyNDUuMjggbnVsbF0KPj4KZW5kb2JqCjQ1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MTcuMDA1IDQ0Ny41NzYgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNTE3LjAwNSA1NDAuMjA4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAxODQuMzIgbnVsbF0KPj4KZW5kb2JqCjQ2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MDUuMDA1IDQxMy44NjggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNTA1LjAwNSA1NDAuMjA4IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjQ2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0OTMuMDA1IDQ0NC4xNzkgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNDY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ4MS4wMDUgNDIwLjIzIDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ4MS4wMDUgNTM5Ljk5OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgNjQ1Ljc5MiBudWxsXQo+PgplbmRvYmoKNDY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDk2LjAxMSA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NiA0NjkuMDA1IDUzOS45OTYgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNDcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDU4My41ODQgbnVsbF0KPj4KZW5kb2JqCjQ3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQ4My40NDQgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCA1MjEuMzc2IG51bGxdCj4+CmVuZG9iago0NzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0NTYuODg0IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDQ0NS4wMDUgNTM5Ljk5NyA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgNDU5LjE2OCBudWxsXQo+PgplbmRvYmoKNDc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgNDg1LjYxMyA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA0MzMuMDA1IDUzOS45OTcgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDM4NC45NiBudWxsXQo+PgplbmRvYmoKNDgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQyMS4wMDUgNDMxLjUyMSA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA0MjEuMDA1IDUzOS45OTcgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDMyMi43NTIgbnVsbF0KPj4KZW5kb2JqCjQ4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MDkuMDA1IDQzNi4wMjQgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggNDA5LjAwNSA1NDAuMTY4IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCAyNDguNTQ0IG51bGxdCj4+CmVuZG9iago0ODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSA0ODUuNzg0IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM5Ny4wMDUgNTM5Ljk5OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgMTg2LjMzNiBudWxsXQo+PgplbmRvYmoKNDkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgNDIzLjUzNiAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzODUuMDA1IDUzOS45OTggMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDExMi4xMjggbnVsbF0KPj4KZW5kb2JqCjQ5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDQ2Mi40NDEgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMzczLjAwNSA1MzkuOTk3IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCA2OTYuMCBudWxsXQo+PgplbmRvYmoKNDk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgNDQ2LjQ1OCAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyAzNjEuMDA1IDUzOS45OTcgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDYzNS4wNCBudWxsXQo+PgplbmRvYmoKNDk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM0OS4wMDUgNDEyLjc1MiAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNDkuMDA1IDUzOS45OTggMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDU2Mi4wOCBudWxsXQo+PgplbmRvYmoKNTAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMzNy4wMDUgNDMyLjM1OSAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwMSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMzcuMDA1IDUzOS45OTggMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDUwMS4xMiBudWxsXQo+PgplbmRvYmoKNTA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMyNS4wMDUgNDEyLjQxMyAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMjUuMDA1IDUzOS45OTggMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDQyOC4xNiBudWxsXQo+PgplbmRvYmoKNTA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxMy4wMDUgMzk2LjYyIDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAxIDAgUiAvWFlaIDcyLjAgMzU1LjIgbnVsbF0KPj4KZW5kb2JqCjUxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDM3OC4yMjggMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMzAxLjAwNSA1NDAuMTY4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAyOTQuMjQgbnVsbF0KPj4KZW5kb2JqCjUxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDM3OC43MjUgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjg5LjAwNSA1MzkuOTk4IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAyMzMuMjggbnVsbF0KPj4KZW5kb2JqCjUxNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNzcuMDA1IDM3NC41MjMgMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjc3LjAwNSA1MzkuOTk4IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAxNzIuMzIgbnVsbF0KPj4KZW5kb2JqCjUyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDM4OS4yMzEgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjY1LjAwNSA1MzkuOTk4IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjUyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA1IDM3OC4xNTcgMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjUzLjAwNSA1MzkuOTk4IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNTI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDUgMzc1LjYzOCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNDEuMDA1IDUzOS45OTggMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDYzNS4wNCBudWxsXQo+PgplbmRvYmoKNTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDUgMzg3Ljk2NiAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMjkuMDA1IDUzOS45OTggMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDU3NC4wOCBudWxsXQo+PgplbmRvYmoKNTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgMzQzLjY2MyAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMTcuMDA1IDUzOS45OTggMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDUxMy4xMiBudWxsXQo+PgplbmRvYmoKNTM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIwNS4wMDUgNDEwLjUwMSAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMDUuMDA1IDUzOS45OTggMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDQ1Mi4xNiBudWxsXQo+PgplbmRvYmoKNTM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE5My4wMDUgNDMwLjkwNyAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjY1OCAxOTMuMDA1IDU0MC4zNzggMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDM3OS4yIG51bGxdCj4+CmVuZG9iago1NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSA0MTguNDE5IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDE4MS4wMDUgNTQwLjIwOCAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgMzA2LjI0IG51bGxdCj4+CmVuZG9iago1NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSA0NTAuOTkgMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODcgMTY5LjAwNSA1NDAuMjA3IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAyNDUuMjggbnVsbF0KPj4KZW5kb2JqCjU0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNTcuMDA1IDQzNS4wMDkgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMTU3LjAwNSA1NDAuMjA4IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAxODQuMzIgbnVsbF0KPj4KZW5kb2JqCjU1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNDUuMDA1IDQwMS4zMDEgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMTQ1LjAwNSA1NDAuMjA4IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjU1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzMuMDA1IDQzMS42MTIgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTMzLjAwNSA1MzkuOTk4IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNTU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgNDA3LjY2MyAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU1NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxMjEuMDA1IDUzOS45OTggMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDY0NS43OTIgbnVsbF0KPj4KZW5kb2JqCjU1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDkuMDA1IDQxOC45NTUgMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTA5LjAwNSA1MzkuOTk4IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA1ODMuNTg0IG51bGxdCj4+CmVuZG9iago1NjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDQyMy40NTcgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggOTcuMDA1IDU0MC4xNjggMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDUwOS4zNzYgbnVsbF0KPj4KZW5kb2JqCjU2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA4NS4wMDUgNDczLjIxNyA5NC45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/eOnP/5JXv23N2y5/fen8R6f/Zp/lo9/P4Hxz4ef1iWIbn3+n/b248knvOH4dPbtPz59//On3/8k19TZt5///Wa2jMdUSnnC3uTpt8iRS0wzv6buZny//Zo81FfFmH7VXwr+9/8AxmbXaQplbmRzdHJlYW0KZW5kb2JqCjU3MSAwIG9iagoxMjk4MgplbmRvYmoKNTcyIDAgb2JqClsKNDA5IDAgUgo0MTAgMCBSCjQxMiAwIFIKNDEzIDAgUgo0MTUgMCBSCjQxNiAwIFIKNDE4IDAgUgo0MTkgMCBSCjQyMSAwIFIKNDIyIDAgUgo0MjQgMCBSCjQyNSAwIFIKNDI3IDAgUgo0MjggMCBSCjQzMCAwIFIKNDMxIDAgUgo0MzMgMCBSCjQzNCAwIFIKNDM2IDAgUgo0MzcgMCBSCjQzOSAwIFIKNDQwIDAgUgo0NDIgMCBSCjQ0MyAwIFIKNDQ1IDAgUgo0NDYgMCBSCjQ0OCAwIFIKNDQ5IDAgUgo0NTEgMCBSCjQ1MiAwIFIKNDU0IDAgUgo0NTUgMCBSCjQ1NyAwIFIKNDU4IDAgUgo0NjAgMCBSCjQ2MSAwIFIKNDYzIDAgUgo0NjQgMCBSCjQ2NiAwIFIKNDY3IDAgUgo0NjkgMCBSCjQ3MCAwIFIKNDcyIDAgUgo0NzMgMCBSCjQ3NSAwIFIKNDc2IDAgUgo0NzggMCBSCjQ3OSAwIFIKNDgxIDAgUgo0ODIgMCBSCjQ4NCAwIFIKNDg1IDAgUgo0ODcgMCBSCjQ4OCAwIFIKNDkwIDAgUgo0OTEgMCBSCjQ5MyAwIFIKNDk0IDAgUgo0OTYgMCBSCjQ5NyAwIFIKNDk5IDAgUgo1MDAgMCBSCjUwMiAwIFIKNTAzIDAgUgo1MDUgMCBSCjUwNiAwIFIKNTA4IDAgUgo1MDkgMCBSCjUxMSAwIFIKNTEyIDAgUgo1MTQgMCBSCjUxNSAwIFIKNTE3IDAgUgo1MTggMCBSCjUyMCAwIFIKNTIxIDAgUgo1MjMgMCBSCjUyNCAwIFIKNTI2IDAgUgo1MjcgMCBSCjUyOSAwIFIKNTMwIDAgUgo1MzIgMCBSCjUzMyAwIFIKNTM1IDAgUgo1MzYgMCBSCjUzOCAwIFIKNTM5IDAgUgo1NDEgMCBSCjU0MiAwIFIKNTQ0IDAgUgo1NDUgMCBSCjU0NyAw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L0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjk3LjAwNSA0MjcuNTU5IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY5Ny4wMDUgNTM5Ljk5OCA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago1OTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA3IDAgUiAvWFlaIDcyLjAgMjQ4LjU0NCBudWxsXQo+PgplbmRvYmoKNTk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY4NS4wMDUgMzkzLjg1MSA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1OTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2ODUuMDA1IDUzOS45OTggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDE3NC4zMzYgbnVsbF0KPj4KZW5kb2JqCjU5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NzMuMDA1IDQxMy40NTkgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjczLjAwNSA1MzkuOTk4IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCAxMTIuMTI4IG51bGxdCj4+CmVuZG9iago2MDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSAyNTIuMjE4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY2MS4wMDUgNTM5Ljk5OCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwMSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjYwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NDkuMDA1IDI1Mi4yMTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjQ5LjAwNSA1MzkuOTk4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCA2NDQuNDAxIG51bGxdCj4+CmVuZG9iago2MDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjM3LjAwNSAyNTIuMjE4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYzNy4wMDUgNTM5Ljk5OCA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgNTgwLjgwMiBudWxsXQo+PgplbmRvYmoKNjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYyNS4wMDUgMjUyLjIxOCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxMCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MjUuMDA1IDUzOS45OTggNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDUxNy4yMDMgbnVsbF0KPj4KZW5kb2JqCjYxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MTMuMDA1IDI1Mi4yMTggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjEzLjAwNSA1MzkuOTk4IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCA0NTMuNjA0IG51bGxdCj4+CmVuZG9iago2MTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjAxLjAwNSAyNTIuMjE4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYwMS4wMDUgNTM5Ljk5OCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxNiAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgMzkwLjAwNSBudWxsXQo+PgplbmRvYmoKNjIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU4OS4wMDUgMjUwLjYwNSA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxOSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1ODkuMDA1IDUzOS45OTggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDMyNi40MDYgbnVsbF0KPj4KZW5kb2JqCjYyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NzcuMDA1IDI4OS4wMjMgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTc3LjAwNSA1MzkuOTk4IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCAyNjIuODA3IG51bGxdCj4+CmVuZG9iago2MjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTY1LjAwNSAyODYuOTUyIDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU2NS4wMDUgNTM5Ljk5OCA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgMTk5LjIwOCBudWxsXQo+PgplbmRvYmoKNjI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU1My4wMDUgMzQ4LjMzNCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCA1NTMuMDA1IDU0MC4xNjggNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDEzNS42MDkgbnVsbF0KPj4KZW5kb2JqCjYzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NDEuMDA1IDI2Ni45NzYgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTQxLjAwNSA1MzkuOTk4IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUyOS4wMDUgMjg0LjA3NCA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYzNCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1MjkuMDA1IDUzOS45OTggNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDY2My4yMTQgbnVsbF0KPj4KZW5kb2JqCjYzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MTcuMDA1IDM2OS41MTYgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy43OTggNTE3LjAwNSA1NDAuNTE4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCA2MDAuMTkyIG51bGxdCj4+CmVuZG9iago2NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTA1LjAwNSAzNjAuNjUzIDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDUwNS4wMDUgNTQwLjM0OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgNTI1LjE3IG51bGxdCj4+CmVuZG9iago2NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDkzLjAwNSAzNzkuMTU1IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDQ5My4wMDUgNTQwLjM0OCA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgNDYyLjE0OCBudWxsXQo+PgplbmRvYmoKNjQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ4MS4wMDUgNDAzLjg4IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDQ4MS4wMDUgNTQwLjM0OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgMzk5LjEyNiBudWxsXQo+PgplbmRvYmoKNjUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDQzLjQ0NCA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA0NjkuMDA1IDU0MC4zNDggNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDMyNC4xMDQgbnVsbF0KPj4KZW5kb2JqCjY1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQwMy42NDEgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNDU3LjAwNSA1NDAuMzQ4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCAyNjEuMDgyIG51bGxdCj4+CmVuZG9iago2NTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSAzOTkuOTM3IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDQ0NS4wMDUgNTQwLjM0OCA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgMTk4LjA2IG51bGxdCj4+CmVuZG9iago2NTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDMzLjAwNSAyMzUuMzEgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDMzLjAwNSA1MzkuOTk4IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCAxMzUuMDM4IG51bGxdCj4+CmVuZG9iago2NjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDIxLjAwNSAyMjQuOTgzIDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQyMS4wMDUgNTM5Ljk5OCA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2MSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjY2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MDkuMDA1IDQwMy43MSA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2NCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MDkuMDA1IDUzOS45OTggNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDY2NC40NDQgbnVsbF0KPj4KZW5kb2JqCjY2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzOTcuMDA1IDM0Ny4zOTcgNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzk3LjAwNSA1MzkuOTk4IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCA2MDMuMDIxIG51bGxdCj4+CmVuZG9iago2NzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSAzNzIuMTYzIDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM4NS4wMDUgNTM5Ljk5OCAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgNTQxLjU5OCBudWxsXQo+PgplbmRvYmoKNjc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM3My4wMDUgMzYwLjgzIDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM3My4wMDUgNTM5Ljk5OCAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgNDgwLjE3NSBudWxsXQo+PgplbmRvYmoKNjc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgMzQ3LjM4NyAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNjEuMDA1IDUzOS45OTggMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDQxOC43NTIgbnVsbF0KPj4KZW5kb2JqCjY4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNDkuMDA1IDM2OC44NTcgMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzQ5LjAwNSA1NDAuMjA4IDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAzNTcuMzI5IG51bGxdCj4+CmVuZG9iago2ODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzM3LjAwNSAzNjIuMDk1IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMzNy4wMDUgNTM5Ljk5OCAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgMjk1LjkwNiBudWxsXQo+PgplbmRvYmoKNjg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMyNS4wMDUgMzYyLjY5MyAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCAzMjUuMDA1IDU0MC4xNjggMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDIzNC40ODMgbnVsbF0KPj4KZW5kb2JqCjY4OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMTMuMDA1IDM3Ny4yMjEgMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzEzLjAwNSA1MzkuOTk4IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAxNzMuMDYgbnVsbF0KPj4KZW5kb2JqCjY5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDM1MS4wMjIgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzAxLjAwNSA1MzkuOTk4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAxMTEuNjM3IG51bGxdCj4+CmVuZG9iago2OTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjg5LjAwNSA0MDMuMDEzIDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI4OS4wMDUgNTM5Ljk5OCAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjY5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNzcuMDA1IDM2OS43MDMgMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjc3LjAwNSA1MzkuOTk4IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCA2NDQuNDAxIG51bGxdCj4+CmVuZG9iago3MDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjY1LjAwNSAzNjIuMzE0IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI2NS4wMDUgNTM5Ljk5OCAyNzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwMCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgNTgwLjgwMiBudWxsXQo+PgplbmRvYmoKNzA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI1My4wMDUgMzg5LjkzOCAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwMyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNTMuMDA1IDUzOS45OTggMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzA2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDUxNy4yMDMgbnVsbF0KPj4KZW5kb2JqCjcwNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNDEuMDA1IDM1Ni44MTcgMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjQxLjAwNSA1MzkuOTk4IDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCA0NTMuNjA0IG51bGxdCj4+CmVuZG9iago3MTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjI5LjAwNSA0MzEuNzYgMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMjI5LjAwNSA1MzkuOTk3IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCAzOTAuMDA1IG51bGxdCj4+CmVuZG9iago3MTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjE3LjAwNSA0NTcuOTQgMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMjE3LjAwNSA1MzkuOTk3IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCAzMjYuNDA2IG51bGxdCj4+CmVuZG9iago3MTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjA1LjAwNSA0NTQuMTI4IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzE1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDIwNS4wMDUgNTQwLjIwOCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxNSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMjYyLjgwNyBudWxsXQo+PgplbmRvYmoKNzE5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE5My4wMDUgNDQ3LjA1OCAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxOCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCAxOTMuMDA1IDU0MC4xNjggMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzIxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDE5OS4yMDggbnVsbF0KPj4KZW5kb2JqCjcyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxODEuMDA1IDQ2MS41ODYgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTgxLjAwNSA1MzkuOTk4IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzIxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCAxMzUuNjA5IG51bGxdCj4+CmVuZG9iago3MjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSA0NDYuNjc5IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzI0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDE2OS4wMDUgNTM5Ljk5OCAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyNCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjcyOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNTcuMDA1IDQ3NC4zMDEgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMTU3LjAwNSA1MzkuOTk3IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzI3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjczMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODggMCBSIC9YWVogNzIuMCA2NjQuMzI2IG51bGxdCj4+CmVuZG9iago3MzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTQ1LjAwNSAzOTAuNDI2IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDE0NS4wMDUgNTM5Ljk5OCAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczMCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgNjAyLjc1IG51bGxdCj4+CmVuZG9iago3MzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTMzLjAwNSA1MTIuOTMgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgMTkzLjcyIDEzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc5IDEyMS4wMDUgNTM5Ljk5OSAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczMyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgNTI5LjE3NCBudWxsXQo+PgplbmRvYmoKNzM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEwOS4wMDUgNDg5LjIxIDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjczOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA5Ny4wMDUgMjM2LjQgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzkgOTcuMDA1IDUzOS45OTkgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQxIDAgb2JqCjw8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RPg8i7+vy5S+u71ESWMLNDP8pi8I/vf/ATcRL2IKZW5kc3RyZWFtCmVuZG9iago3NDggMCBvYmoKMTkwNjEKZW5kb2JqCjc0OSAwIG9iagpbCjU5MCAwIFIKNTkxIDAgUgo1OTMgMCBSCjU5NCAwIFIKNTk2IDAgUgo1OTcgMCBSCjU5OSAwIFIKNjAwIDAgUgo2MDIgMCBSCjYwMyAwIFIKNjA1IDAgUgo2MDYgMCBSCjYwOCAwIFIKNjA5IDAgUgo2MTEgMCBSCjYxMiAwIFIKNjE0IDAgUgo2MTUgMCBSCjYxNyAwIFIKNjE4IDAgUgo2MjAgMCBSCjYyMSAwIFIKNjIzIDAgUgo2MjQgMCBSCjYyNiAwIFIKNjI3IDAgUgo2MjkgMCBSCjYzMCAwIFIKNjMyIDAgUgo2MzMgMCBSCjYzNSAwIFIKNjM2IDAgUgo2MzggMCBSCjYzOSAwIFIKNjQxIDAgUgo2NDIgMCBSCjY0NCAwIFIKNjQ1IDAgUgo2NDcgMCBSCjY0OCAwIFIKNjUwIDAgUgo2NTEgMCBSCjY1MyAwIFIKNjU0IDAgUgo2NTYgMCBSCjY1NyAwIFIKNjU5IDAgUgo2NjAgMCBSCjY2MiAwIFIKNjYzIDAgUgo2NjUgMCBSCjY2NiAwIFIKNjY4IDAgUgo2NjkgMCBSCjY3MSAwIFIKNjcyIDAgUgo2NzQgMCBSCjY3NSAwIFIKNjc3IDAgUgo2NzggMCBSCjY4MCAwIFIKNjgxIDAgUgo2ODMgMCBSCjY4NCAwIFIKNjg2IDAgUgo2ODcgMCBSCjY4OSAwIFIKNjkwIDAgUgo2OTIgMCBSCjY5MyAwIFIKNjk1IDAgUgo2OTYgMCBSCjY5OCAwIFIKNjk5IDAgUgo3MDEgMCBSCjcwMiAwIFIKNzA0IDAgUgo3MDUgMCBSCjcwNyAwIFIKNzA4IDAgUgo3MTAgMCBSCjcxMSAwIFIKNzEzIDAgUgo3MTQgMCBSCjcxNiAwIFIKNzE3IDAgUgo3MTkgMCBSCjcyMCAwIFIKNzIyIDAgUgo3MjMgMCBSCjcyNSAwIFIKNzI2IDAgUgo3MjggMCBSCjcyOSAwIFIKNzMxIDAgUgo3MzIgMCBSCjczNCAwIFIKNzM1IDAgUgo3MzYgMCBSCjczOCAwIFIKNzM5IDAgUgo3NDAgMCBSCjc0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AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//S/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//T/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//U/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//V/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//W/Sz+3bz/AKFfVfzt/wD47QAf27ef9Cvqv52//wAdoAP7dvP+hX1X87f/AOO0AH9u3n/Qr6r+dv8A/HaAD+3bz/oV9V/O3/8AjtAB/bt5/wBCvqv52/8A8doAP7dvP+hX1X87f/47QAf27ef9Cvqv52//AMdoAP7dvP8AoV9V/O3/APjt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aX/yQf8AEVOLf+gv/wAp0v8A5AP+GMv2a/8Aom//AJWL/wD+P0f6qZR/z5/8ml/8kH/EVOLf+gv/AMp0v/kA/wCGMv2a/wDom/8A5WL/AP8Aj9H+qmUf8+f/ACaX/wAkH/EVOLf+gv8A8p0v/kD13Q9F03w3oun+HtFtvs+n6XaxWVpDvZ/LhjQIi7mJY4VQMkknHJNe7RpQoU40qatGKSXotEfDYvFVsfiKmKxDvOcnKT0V3J3bsrJXb6KxdrQ5z//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo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UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf/1/000PV7XxBothrtktyltqNtFdQrc20tvKEdQyh4pVWSNsEZV1VgeCAeKurB0ajpy3Tt3/FaEUp+1gp9y9UFhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH/0P0j8IaZ4v0qw+z+MPEumaxcLHbokthpT2CArCiyko08xO+UO4G4bVZU+YrvaqklNuSW7v8AgtPvu/RpdLuIQVOEYR6K3q7vXy93lVu6bvZ8sd+pLCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/9H9QqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/9L9QqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/9P9QqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA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AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAEa/8hPTP+vl/wD0RLQB0NABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH//V/UNv+Pm4/wB8f+gLQAlABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHPN/yE9T/AOvlP/REVAElABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFTVtW0zQdMuta1q+hsrGyiaa4uJnCpGijJYk0AYXw58eaP8AE3Q9A8baBHMunX97eJb+cu13SI3EO8jtu8vcAeQCM80Aei0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf/W/UNv+Pm4/wB8f+gLQAlABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHPN/yE9T/AOvlP/REVAElABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHN+Ovh14Q+KGjr4f8a6bNf6ekguDbpez26MwOAW8l134PIDZAPPWgCbwZ4P8OeANP0Dwl4S077DpNjc3H2e386SXZvjnlb5pGZjlnY8k9fSgDu6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/ZCmVuZHN0cmVhbQplbmRvYmoKNzgyIDAgb2JqCjEy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99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAPOh/wCe6f8AfQoAPOh/57p/30KADzof+e6f99CgA86H/nun/fQoAfQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB//9X9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAy7z/AI+X/D+QoAwtR8X+E9IumsdW8T6RZXKAM0NxexRuAeQSrMDzSumNprctaZrmi60rNo+sWV+EVWY21wkoCkkAnaTwSrAf7p9KqzWv9bJ/k0/Rom6LEN1a3LSpb3MUrW8nlShHDGN8A7Wx0OGBwexHrS6X/rt+Y/IloAKAIYLy0upJ4ra6hle2k8qZUcMYn2htrAfdO1lOD2IPejdXB6OzB7y0juorGS6hS5nV3ihZwHkVcbiq9SBuXJHTI9aFrsG2pNQBCt5aNdvYLdQm6jjWZ4A48xUYkKxXqASrAHpkH0oWuqDYmoAhuLy0tDELu6hhM8ghi8xwvmSHOEXPVjg8DnihauyDpf8ArsTUARG6tRdLYm5iFy8Z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9mqj/s7+GrtpJda8V+KNWuksY9PsLy6uoBc6fHHPHPG0UscKs8iyQxMHmMh+QDoWyKs4yU4pKV0792k1qttVJp2Svf0tMsPGa5ZNuOtk3tez0fxaNK127W9Te0j4WWOnazYeItQ8U+INa1SxvLi8FzfzxHe8tuLcr5ccaRoioBhY1T5sk5yaPaqKahFJNNffKMm7t3veKS1slokN0m0lOTdpKWvlGUUrKytabbsrt6t73savoWv6h8T/AA/r8dpajRtH06+jkna5PnPPcGIBBFsxtAiB3bud2McZJSmoqpzbtJL70zWo24xgtua7+UZLa2t+burW2d9GeHND8SaR8RfFuo3On2Z0bXGtbq3u1uyZhLHbxQmNodmAPkZt+/0GOc0c0fYqD3Tb8rO3+Q6l3UjJbcqXndSk/utLuLcfCvw/deAr74cy3upDStSuLm4umWZFmkFxdvczRbguAjNI6HAzsOM5+aojJxdN2vyKKV+vIko3+5P18tCZRuqkb/HzX/7fve33tLt66jPFnwi8E+M76zutWsWjS2tLzT5be32xRXdtcoFeKXC7sBkR1KlSropB7UozdPmcd5W++MlJNeaf5u6Y5QVRRT6X+5xcXH0aeq8l2Oc0r9n200vxzo3j26+InivWbzRAscUOqzW80UkSwyxIGCxIWkUTMRMxL9QSck10LEuKlaKXNe7trrbbt8KulZPscrwcXKMnKT5bWV9Fa/S2vxOzd2u50kPh7xDL8XpPFtxaWcWj2+gtplvKtyXmmleeOUlo9gCKNpH3mzx0rKnKMaVSL3k4fdFT6/8Ab21um50VYudSk1tFTv3vJw0tbZKG9+traXfc1BoFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH//0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9P9UqACgAoAKAMbVvGHhLQLkWWu+KNI064ZBIsV3exQuUJIDBWYHGQRn2NJNPYLF3TNV0zW7NNR0fUra+tZCQk9tMskbEHBwykg4IIqrNCTT2J554baJp7iZIo0+87sFUfUmlvoMoax4l8PeHTE3iDX9O0wT7hEby6jh8zGM7d5GcZGceopXV7DtpcdpHiHQPEMUk2ga3YalHE22R7O5SZUY84JQnBp2e/Qm6vbqaVAwoAqRXtpcXE9rBdwyTWzKk8aOC0RYBlDAcqSCCM9jmjpcXW39f1oyYzxCVbdpUEjqWVCw3MBjJA7gZH5igZLQAUAeeeI4bSTWdSkuLOCZhMihpI1YgeTGcc/U0AZPlaf/wBAuy/78J/hQAeVp/8A0C7L/vwn+FAB5Wn/APQLsv8Avwn+FAB5Wn/9Auy/78J/hQAeVp//AEC7L/vwn+FAB5Wn/wDQLsv+/Cf4UAHlaf8A9Auy/wC/Cf4UAHlaf/0C7L/vwn+FAB5Wn/8AQLsv+/Cf4UAHlaf/ANAuy/78J/hQAeVp/wD0C7L/AL8J/hQAeVp//QLsv+/Cf4UAHlaf/wBAuy/78J/hQAeVp/8A0C7L/vwn+FAB5Wn/APQLsv8Avwn+FAB5Wn/9Auy/78J/hQAeVp//AEC7L/vwn+FAB5Wn/wDQLsv+/Cf4UAHlaf8A9Auy/wC/Cf4UAHlaf/0C7L/vwn+FAB5Wn/8AQLsv+/Cf4UAHlaf/ANAuy/78J/hQAeVp/wD0C7L/AL8J/hQASW+ntZ3TLptojpA7KywqCCFOCDigD1mgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP//U/VKgAoAKACgDgPi/ZWs2h6ZPLaQySDXdLTcyAnabpMjPpyfzrP8A5f0v8X/trCb/ANnq/wCF/mjzJPEOtW3ji5ju/FC6aI/EFzZ3GnnU5ovL00K2WWzSLYiiIeYLgP15LDtVKzpJze8ZXt0ev3WdrLr53HO8Z6LrG3nqvvvd37eVjMvdR1fxB4L1+Dxb4i14Pa6db3OipJK0AvdMFxgXUqqxEkhyu7cMgbD3zWkdHGVTSXNDm/u7bdt229bSVtLJCW8ox1i4zt5vV2/BJLS8W9NT2Xx5a6ZcfCTWJLeYajBFoM7Wt1K/nvIv2c7ZN5yWJGDu79awxN0tVZ3X/pSHRXRa/wDDHkvifW/EmlavNDp+uporWlhpUmkQC+lthcs6LvYW0cLi8JkyhBOQB0xzXXLXEyS1fPa3l6dE9dej7Ws8aSTw9O+nuXv5+vdaaPv5m5HYazqer6TPc+NfEsY1vxPq2nzwwapJHHHbQvOUjjA+7gxD5hhsEgEDGOSl73sk/tQbfqrWKc3yTk91KK+9a/n/AEzFtvECPqVvpvjL4na9pVpa6Le+TOmovC880N/cxIzsv35PLjGBglyvfGDXO5UHVXx8sGl01jd6etvk36rolBQqqH2eaS/Lr9+vTbyG2/iXWlsp7jX9QutNvtV1DSRezDUP7NViNMVyJrhULQhiASFXJPyjFbVbRcYLvN+V7Qv9zei/yOWnzNOflFd9Oedvlbd/5kGja1f3dtofiVPFeoXWtwaTr9vYj7c8omuYJEMEW1gDIzIwJVgC4SMkcCsFzxTkt3CLf3tP7km+tndlytOoo/ZU7L7rrXzbt6aGz8Ptenu73ydV+IdzLpktvp1w8ltq9xeyLfNcKqRtI0KiES8q8GeB6DkdDUVKy/mSj2fuyur/AGlaz8n5uxLk+V82nuu/lqtbdGr2813tc+gqzNDz3xH/AMhfU/8Ar4T/ANERUAY9ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA5v+PK8/64Sf+gmgD1igAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP//V/VKgAoAKACgAIB6jNADfLj3byq7sYzjnFAC7V/uj06UAG0Yxjj0oARo42IZkUlehI6UALtX+6OPagDM/sLTV11/EAiP2yS0SyZix2mJXZ1G3pnczc9eaFJpOK62f3X/zE0pNN9L/AI2v+SNJo0cYZAR7igYCNB0RRznpQAixRrnaijJycDvQA+gDhNdtp31fUM2d6yvMjo0dpLIrDyYxwVUjqCPwoAzf7Ol/58dR/wDACf8A+IoAP7Ol/wCfHUf/AAAn/wDiKAD+zpf+fHUf/ACf/wCIoAP7Ol/58dR/8AJ//iKAD+zpf+fHUf8AwAn/APiKAD+zpf8Anx1H/wAAJ/8A4igA/s6X/nx1H/wAn/8AiKAD+zpf+fHUf/ACf/4igA/s6X/nx1H/AMAJ/wD4igA/s6X/AJ8dR/8AACf/AOIoAP7Ol/58dR/8AJ//AIigA/s6X/nx1H/wAn/+IoAP7Ol/58dR/wDACf8A+IoAP7Ol/wCfHUf/AAAn/wDiKAD+zpf+fHUf/ACf/wCIoAP7Ol/58dR/8AJ//iKAD+zpf+fHUf8AwAn/APiKAD+zpf8Anx1H/wAAJ/8A4igA/s6X/nx1H/wAn/8AiKAD+zpf+fHUf/ACf/4igA/s6X/nx1H/AMAJ/wD4igA/s6X/AJ8dR/8AACf/AOIoAP7Ol/58dR/8AJ//AIigBJbG4Fncxx6fqLPJC6qPsEwySpAHKUAenA5APrQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH/9b9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAxtb8XeFvDLQx+IvEel6Y1xkxC8u44d4HUjcRkDIyfeldXt1HZ2uakM0VxEk8EqyRyKHR0YFWUjIII6gim007MlNNXREb+yBI+2QgrKID844kIBCf7xBHHXkVKu9v6tv+TG9Nwsr6z1GAXNhdw3MO908yKQOu5WKsMjjIYEEdiCKad0mtmDVm090WqYBQBFPPBaxNPcTRxRryzuwVR9SaN3YCWgAoAKAKdrf2V40ws72Cf7NK0EvluH8uQYJRsdGGRkHnkVN9L/1vb8016g9N/wCuv5EwnhMzWyyoZUUO0YYbgpJAJHXBwefY1QE1ABQBjyeKfDMJk83xJpifZ/M80Ndxjy/LcJJu542uyqc9CwB5Iqd7Jdbfi2l97TS7tNBa1/L/ACv+WvpqbFUAUAFABQAUAUbTVdNvgjWWpWtwJDIEMUqvuMbbJMYPO1vlPoeDzUxakrrbf5PZ/MH7rs/T5l6qAKACgA6cmgCKCeG5iS4t5UlikUMjowZWB6EEdRQ1bcCWgCGC4guohNbTJLGxIDowZTg4PI9wRQBNQAUAQvPCkyW7yosjqzqhYBmAxkgdwMjP1FACwTw3MSXFvKksUihkdGDKwPQgjqKGrbgSEgA5OAKTairsCvZ3lpqNrDfWF1Fc29wgkimhcOkikZDKw4II7iqaa3EmnsWaQwoAinngtYmnuJo4o15Z3YKo+pNG7sBLQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH//1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDxT4mTaPY/EN9RfxhbeGdTOhrAW1qwjuNN1O18yRmhUsQyurEbgDkhlwp5zlF+7Ujurq6fXTRq2tt16opx1g352a6a7PpfqvzPOp/F3ixtNsxFqK+D0tNCs5tCsV1S6tI5H8xgXjg8mRrwMyoBE5yEYdclhtLmjVdtWnBWeujjHS3q2m+612IShyJdGpttaK/M9b7rSzt5l/V9G0W0v9Wk1XxfrFvNaeOdPa8VtYlVbeCWCM+eQcbTu3qshAIEajI21GFtGVPl25qi/wDS7fN2V+933LqSlOE+bdxg/wAYX+Svoull2LkTa7qttr0q+LtesY9G0DV9Tgisr+SAPcrqV8Ed9p5AEYGOh4z0FKldYVVeqjT9NY3f5GkkpYlUukpT/BwX6/1qUfFHjjUJtH1HV9Y8fa3pXiYtpH9kaZa3UlvBcWs0MLPIsa/LIGZ7jc+TtKKMjgHqpwSxahb/AJetNeSlovJWs79b2ONyao3b09mmn3dtdeuunktfT0b44a++m3Wg6d/b9zpcV0t7PJIurvpkDmONdoeeNHlZgXysSD5znPQCuOTbckt1G69W7aLq/XY6U0oq63a+6z3fS/fyMTXb2fxf+zBbazqmsXU062ME1xcQXDI0jxyhH8wr97GDuB/iXJ5FdNdRhiKbvZXpt/Nxu/K17rs9tjLDc7p1Ive019ylb70kvNPzMNfE3iP/AITtIrHxuxa31mwtNLtZtbnY3umske1/sqwutwJEZ3a4L5B5JXAzlTcr+9u5STVtlr005bJJp7P56VXtGLUOkYtPz669dbproT+FdK1vWm8FR3/xB8YH/hJdJ1C8vjHrMqfPCY/K2f3Mb+cfewM5GQVVXs41Evs04yXq/wDh9vTqTKo/aJW3qSj8k3/l+LXa2KnjKa80/Ur3xD8Tdd03V7bwrpd7o9tBfvEl3etb5J8sZErNIIwUxyHY47q23eThrLmWlu8YvRebb6afMqKTjBT0jaV36Tkr37pLTW7+RYufEmo2trNa6rq9xok99r+rXN5t1d9MgEyW1udrzxxvKzKznbEg+c9egFVW5UuWn0U7f+DZpWX2n6jhJ71Fq/Z3/wDBcW79r/8AAM2z8Q6sui3viyz8Zam+v33hLTJC5vnYbBdyw3cgUBv9VGhYkKSjPI+Mk0rKNSUV8LlC/TRxTbv095qN7aJ2RzR53KLa1Smlpu09F0v7utm9bJnrXwX1DU9RHiS0l8RJq2mW9xCtlNFqk+o+Uzx5lQXckSeZj5SAM7CxBxTqR56Fno25K+2mn5O9n1+RrGVqmmuifz1/NJXX+Z5q3jD4nW8x0wanqEjwB/AXmNO/z6o8khjvs5+8IhGd555NKm/rFr+7z226cnJz/fee3ZdtLqfuJNLXkvLzalzci7bqP3kfiEzeV4ht5rma4+zQa7bpJM5ZyqavZgZY8k4HWtKT5q1OVrXdF/8AlaoPlcYTi3eyn/6Yger/ABb1JrPVvC1lq3iS/wBB8OXtxcjUr+0uDbESrGDBE86kGNWO/vztxWC5XJqbto7ebuvyV2l18w1VO8V1V/Ja/rZN9L9Dz2LxT480/QdOvbLW9X1G38TxXnhnRri4ZlYy/aiLK9bOCHaFpSXwCwiQn1q4p1OWlP3ZTUZPTaz9+3b3WpepHMqblNK6hKS3ve8bx9ffXL8yteeIfGmn+M7mzfxlPFqFjrw06Cxn1a4Ms2nBMK32JYWV90eZDcF+G5JXFZVanNRnUju1Ubt0sntty2srd/O+m0IWnGD6clvPa/e93dNbr5a2Jf8AhOdB8KeE7uw8Y+Ir+48f6ZFpjz3d48i2V9c+Q8c0Yz8m2Lzxkc5XJOTmta0JOtKhDyf/AIA7y9E09uy8jOM+Wmqkleza+9NR+6SWr7k2jX/jTxzZ6NdX/ijX9FXVdctdEkFtctE4W106Y3TLg4BkuBIN2M/Ip6qKalCrUjNbTU5peXuqK8tm/mZVHKinT6w5YX7u+r89GrFL/TNOl0fXbXX9W/tddO8Vx6ZE127LPdw3p8mMRniRmBJKn75jTOdorlpzfK5R3dOD+TXvW9Fdrs9TatTSqqHRTa/O135vTzWh1HwM1zWdR1+4gPi1Na06XRre5nX+1rjUmhuy+Ml5IUEBZd2Yc5BXOMdO6UYqM7bKSt6Wd9evR36eV7GHM3KN92ndfNdOlrtefna5x+pfEHUoPGUtxbeML2E3F/rdpLaXGuO0iKkMwhU2YQR2wDogjO8yMee5xwqUpUG49acn533V30fktEjs5VGsov8Angvk2k9Oq13ZqW8XjazjtbbQ/GWv319d+DIPE226v5JhLeQ3ETmNAT8qSIzxlBwQRnJGa7MRJYarU5leNOUX6r31L8Fe3R7GVKHt6MHeznzL00i4/c9L9rno3gKW+8c+GNb8TXuo6lBa+J7iY6dHHcPFJaWaL5URj5/du2xpCV7uPSsMVTdLDuMtXZy+/VL0tbT17k0pqpU50rLRfdu//Am/uR4fD4g1Gx8MeH7HTvHk+n6dB4VF1bSza7PaL/aQciaNTHFJ55ixGotjgANwDnNatyk2+q5eXrdPrbr71436JW8yKSsrSWl5X6WfRX6ae9tq3fyOusfEOv6j41s9L1fxVrUfhm7ubaHULu2lkhWHXHtubJJdyyRwliGKbQFkIQhcmqcYupKPS8+TXf59eX3uXa9tOayDncYRn5QcvJdHa2nNpzdk9Wrm38Pri70X4BavceEdQur3V7FdSIR5TcyW1yrvhAh6ELtfZjktnB3c4Yib9hTktnGF35ac33apdkrdDpjBLEVIz/ml+bt9+l+9zlJtau57+PQ/AHxO8Q6po2oR6Qt5qcl888tndzXsce1JG+4zxM5aLoCvIHStGr1VD7PNpruuSbaT67Rd9bNmMH+657+/yttW0WsbO3TVtWvqu+56T8VbpvCvg/Q9Mj13UoI5dQtrCS8l1Y2jSRhHJNxeFWeNW2As6jcTgDG41MpKVWKem77LRfi+y6jiuSnK2v4vVr/hvI8w8CTW/izXfD82t+PNYMssWvaXby2+szZYpLCYkWRgHZjHIWywDMEiJA2gVE4v2ctLydNN+bTkmreiu16vqYyb9or/AAqdl5Jq61827J9djDuPFS6V4D0az0TxxqUD2XhVbtA/iCS1Rb0yFWjiSNGe4dSm3yWKxooHPJI1qN35o9OW3W63bts10be1rdC6K05Gtbzv07JK/R9bdb3O28NeL11nV49T1r4ha5F4in12GC00i0fdbzWDICjfZs7GheImRp+q9QcgAmKjGMZxp66VL+Vua3pZJW73630KTk4p1NNIW821G/q+a6a6W6GDFNr3gvwDodxpXi3XGbWfBV/dSJLfOY7Z4kgaEwJnERQOVyvUdeeaJpynKF9vZP5uaT+VntsTRlrHTd1F90ZP81e+97mv4gste8PXvjU2Xj3xZJ/wi0GkXlj5+qySK0s7fvfMU8Op8sfIflG5sAZ4dFqVSN1p7SMf+3Xyf/JPXfRed9qkP3Su9XTlLTuua1u239aGLrfjDxxHqeu3i+L3g1aK61iCbTf7WuPMitY4JTGVslh2QhVSN0nEnJPLEscY0LujFy6xbfk/X7NnpbqXKP77lW3PFLzV1063V2308ifxvY6nZ6Pqnh++8W+Ib+1m8J2GvTtc6hI5+1fa9jkc4WMqxJQfL8qnqoNdtSEIVJJ6KFWCv2TbT/K6fR6qxhh5SqUozW8oT09Ipr87PutGe/8AhjW9A1K2bTtC1k6iNLit4pZmkaVmDwq8bGQ/6wsjK24E5z61jK+srdWvmt18gi18PWyf3/8ADG/UlhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB//9D9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAayIwAdQ2DkZGeaAFKgkEgEjp7UALQAUAcfqvwz8Naxrja3ey6ofNmiuZ7NNQmWzuJotvlvJCG2krsTjgHaMg0QvB3j01Xk+6FNc65X2t6rsdeQDjIB5yKBigADAGKAE2jO7AyOM0ALQBl2mhaZY6xqGu20BW81QQi5YuSG8pSqEA8DAYjjrQpWjyra9/m0l+SQN8zTfRW+V2/wA2zTIBxkA85FACgADAGKAEVVUbVAAHYCgBaACgBGVWBVgCD1BoAWgBNq7s4GcYz3xQAtABQAUAIFVc7VAycnA6mgBNi5ztGSc5xQBna/o1v4g0i40e6ubu3hulCO9pO0MoGQSA68jOMH1BI71nKKnpLb8/L0Ki3F3W5Y03T7LSNPttK06BYLWzhSCCJeiRoAqqM+gArWUnKTk92ZxioKyLRVWxuUHByMjoaRQtABQAiqq52gDJycetAAQGGGAIPY0AAAGcADPJoACqkgkAkdKAAKoIIUAgYHHb0oAWgAoATau7OBnGM98UALQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB//0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDIl1TUDd3NtaWFu6W8ixl5LlkLEordAh/vY69qAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAD+09a/6Bdl/4Gv/APGqAIrrWdWtLWa8k0q0KwxtIwW9bJAGTj917UAblABQAUAFABQAUAFABQAUAFABQAUAFAH/0v1SoAKACgAoAKACgAoAKACgCKSaKFkEkioZW2IGYDc2M4HqcA/lRvoBU1jVrXQtKvdb1AXBtdPt5LmYW1rLcylEUs2yKJWkkbAOERWZjgAEkCiTUVdjhFzait38vzPNvAv7TXwk+JHidvB3hO88VXGqQ3D2dwt14K1uyhtZ1hExinnuLRIoH8sqwWR1JDpjJZctU5SjzrbX8HZ272ejS8+zJk1DR+X47fees0hmXYa3o+p6jqel6fqdvcXmjzR29/DG4L20jxLKiOP4SY5EYA9mB70LbmW17fPR2+5r7xyjKm0pK11zLzV3G68rxkvVNdDUoEYsH/IR1T/r7T/0RFQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoApa3/yBb/8A69Zf/QDQBv0AFABQAUAFABQAUAFABQAUAFABQAUAf//T/VKgAoAKACgAoAKACgAoAKAPhb9vz4EftU/FHxz4R8Q/s/67q72fhqIeInsptTtLezh1Wxk/0T7IjoX+1Otxc5Mn7lgqbmG0KZwk5YfFupK/LorrlvafuTjG+1o+829ru127KqqVSgoRaT1vo7ae9FvX+ZJK3VK9viPsjwPo9/4f8GaHoWpatq2qXdhYQW017qssct7cOkYBed4wEeQkfMyjBOTWtdxlUk1a3lon526X36ei2MKKl7Nc+7116X1tp22Pkr4xeBfiNqFr8TFstB1IaBqHxg03UdZik8PXmrQ6loa+HbGJm+wW0sM+oWwu0iEkUMnIhkBWQI8TYrlUcNz7J1r6N2blU5W0vX3W01GTjPTl5l16OdZw+JwppapbOPMk3pfl5rq6bV4rVpPhL74afGe5+HnhzRvhhoni/wDtDTrjX7u7lTSbrwvBN4KeZfN0G1iuZbmS3muXANmkjpNbxoT/AKOu0PrJxbTxScoci9rrzSnepNwVkvecI35knfl9yT5qhz2d6nsvjcm6TXuxhJU4KV27tRlN9Y2c7zgnGnr678PPh18ItC8deO9WT4IeJLC28Saz4S1rTGs/DV/aM0W2xMBkZFTZ5F6jyzwOQY1WRpU2E5ui6tKpUi2uZVZ66Wd6W66NNuok+kpW0bQ6zp8lLkTS9gota392pNOPry+z66xStdRZ9aVkMxYP+Qjqn/X2n/oiKgCxQB43+1b8ZPE/wL+Fq+N/CVjpd3fHU7eyMeoxSSRbHVyTiN0OflGOcdeKAMD4ZfHP4pz/ABtf4H/FLS/Bd7fSaO2sR6l4SuZ5Le3UNt8uZZssrHB67cbk4IYGgD6DoAKAPE/2p/iz8Sfg74W0TxD8PLDwxePqGqR6VLBrAnaSWaYfuUgWJkBPyyFizjAUYBycAHp/gkeNh4Ysf+FjNobeIsP9tOiLMLLO9tgi84mT7mzJbq27GBgUAbtAHkX7Snxd8SfBzw34X1jwzY6bdTa34qstDuFv45HVYJo5mZkCOhDgxrgkkcng0AGufFzxLpn7Tnhz4LwWWmNomr+G5dYnneKQ3azI8yhVYOECYiXgoT159AD12gAoA+WW/aM+OPj74n+MPBPwd0L4ewW3g/UpNKeHxJfyre38sbujtCkbrhSY2xlSAMZOcgAH0r4auNbvfDulXfifT4rDWJ7KCTULSGQSR29yYwZY1YEhgrlgDk5AzQAzWP8AkIaH/wBf7/8ApLPQBqUAeXa38XPE+mWniQ2fgWC8vfD3icaD5MM+o3SzQPYw3cdyfsen3EsbFLiNWQxbFbI80/LuANb4X/EDxF46/tP+3/CH9h/YfJ8r91qqedv37v8Aj/0+zzjYP9X5n3vm2fLuAO7oA8i/aA/aA/4UR/wi3/FBat4l/wCEl1E2P+gtt8jGzgfK2+Vt/wAkfy7tr/MMUASeOfjD4z8LeKb3QdJ+HP8Aalra+X5d35Gvt5m6NWPNpo9xDwWI+SZ+nO1sqoB6VoGoXGraFp2q3ln9knvbSG4lt8SjyXdAxTE0ccgwSR88cb8fMinKgAi0f/kIa5/1/p/6SwUAaUjsigrE0hLKMLjIBIBPJHA6nvgcZPFAGDP4sjsZZ01C22bZxHGhngjZR5MTkN5kgBIMhHykjj8SAbdtLJPCsstrLbs2cxyFSy899pI9+DQBLQByPjfxjq/hqzSaz8PzYbV9M0/7VcGI27x3F9ZwOVCy+ZuK3UoXKgBoHLDaU8wAxfh/8btK+JOszaT4b8L380No229v4da0S8gs8q5TzVtL+WVd5jZV/dnnrgBiADtPFX/Isax/14XH/otqANSgD56+Kv7UfiP4c+PdU8G2Hw+8JanBp/kbLq++Jek6VPJ5kKSHdaznzI8FyBu+8AGHDCgD1H4d/FnwX8RLGxi0vxT4an16TTor7UNH0zXrXUZbFiqeahaFiHVHcJ5gAUnGOooA7SgChruv6F4X0qfXfEutWGk6bbbfPvL65SCCLcwVd0jkKuWZVGTySB3oA+Xf+G2vF/8A0SfwH/4ePQv8aAPqLQtf0LxRpUGu+GtasNW0253eReWNyk8Eu1irbZEJVsMrKcHggjtQBfoA4v4ifFnwV8O7G+i1XxV4ag16PTpb7T9H1PXrXTpb5gr+UgaZgEV3Qp5hBUHPoaAPLvhV+1H4j+I3j3S/Bt/8PfCWmQah5++6sfiVpOqzx+XC8g22sB8yTJQA7fugljwpoA+haAOT+Kvja8+HPgLVPGVhpNhqc+n+Rstb7WYNKgk8yZIzuup/3ceA5I3feICjlhQB89f8NteL/wDok/gP/wAPHoX+NAH0L8KvG158RvAWl+Mr/SbDTJ9Q8/fa2OswarBH5czxjbdQfu5MhATt+6SVPKmgDYuP+Rn0/wD68Lz/ANGW9ADfFXifS/B2hXPiHWDMbe3McYjgiMks0skixxRRoOWd5HRFHdmAoA8YuP20PhVZXkGmXtpcw312XFvCNd0KVXKDLh5o9QaG3IHTz5I95+VN7ArQB6X8N/ip4d+J1tdS6NDcW09osUskE01tPuhlLiKaOa1llgljZoplDJI2GidThlIoA7KgDG1PxTp+l3DW0qM7IQHbzYYlViAduZXXJwQcDOARnrQBUtvHuiXYEkKymEgkyeZDlVHVjHv8wAYOTt6DPTmgDpKAMrw5/wAeE3/X/ff+lUtAHjnxz+OfiT4X+Jbq3t7+ws9Is7TRf+ZYuNXupbrULi/jHEd7bhI1WxHZiWfAySqkA73+x/jn/wBFG8Cf+EXef/LSgDW+GXiW+8afDbwn4x1SKCK913Q7DU7iO3UrEks9ukjhAxJCgscAknGOT1oA6WgD5p/4Q34w/wDQH8Zf+DK6/wDmqoA9M+DWjeMdI/tj/hLLPWYPN+z/AGf+0bmWXdjzN2zzNVv8dVzjyu33/wCAA7XxH/x4Q/8AX/Y/+lUVAGrQB5R8TP2lvhl8MvFuheAdR1WO88Q65qVnYmzglUCxjmmRDPcueIlVWLbT8zYHABLAA9Rs72z1G2jvdPu4bq3lGY5oZA6OM44YcHmgCagAoAwrrxlollrSaNdXSIZYlkSfcDHuLMNrH+E8Dr69u4BuggjIOQaAMu3/AORn1D/rws//AEZcUAcV8fPihq3wt8F2t54Z0qDUvEniHVrTw9oVtcMVhe/uSRGZCMfKArtjIzgDIzkAHmHivxF+0d+z7p1n8TPiN8RtF8ceFVu7eDxFYRaLHYSaVFNIsYltZI/mmCu6jEgyRjgZLKAfTFABQAUAFABQAUAUtb/5At//ANesv/oBoA36ACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMWD/kI6p/19p/6IioAsUAfOX7enhfxP4v8AgWmkeEfDeq65f/23aS/ZdNs5LmbYFly2yME4GRk4xyKAOA+Dvg3Uz+0Tonir4L/Bnxr8MfA8VhPF4nh8QwSWaai+yTyQtvJI+4h2TBU8cnA53AH2ZQAUAfKn7QHiXxF4u+PHw28M2nwl+ImoeHPBniNdS1PULXw/K9nc3OyM2rwylgjRxuziR3KgDcRuA5APqugAoA+fP21NH03xD8ONH08eOfC2ga7puuW+vaRBr+qw2MV/JbKyvGrSsucCcHjjJUEjOaAPPvhf41HxP/aV0z4v+P8AxN8O/C0mn6GPDmlaHZ+NbDVLq/uZZXwV8iQj5jMwC/ezsUA5LUAfYlAEGoWNrqlhc6ZfRebbXcLwTJuK7kdSrDIwRkE8g5oA+EPjh8PPCGqSeJtAg/Y58fw+Jo57y20LxBoRnubS6Id1t7mZwxUKwEblWVmAJGR1oA+mv2XPhxrvw7+EWi2vjW3kTxZeW5fV3kuWmcnzZWhRiWK7kjkVTt7g8nrQB6RrH/IQ0P8A6/3/APSWegDUoA+ePhx8UviV49+GeoeO/Aui6Df6lqPiKMeZpekWMklxaf2fAfNu7f8AtpVhuFbZEQ900qxxxAwrn5AD0v4W6v8AFPVf7T/4WXon9neV5P2L/iV21nvzv8z/AFOp32/GE+95WM8b8nYAd5QB5D+0H8R/jL8P/wDhFf8AhUXwt/4TH+1NRNvqnySP9miGzaPkI8vfuf8AfPlE2fMDuFAEnjrxH8fbDxVe2ngrwt9s0VPK+zTf2DZXO7Mal/3kmu2rthyw5gTGMDcAHYA9L0CbVbjQtNuNdg8nUpbSF7yPyli2TlAZF2LLKq4bI2iWQDoHf7xAItH/AOQhrn/X+n/pLBQBLqumW+oG2lm+1k28mVFvcNEfmG0kkMvABJ65wCBnJBAObmtdSnmu10+2vhsugHRZmLr/AKLb4DsLmPcevOX78juAdVpqbLKNfs9zBjP7u5m82Qcnq25s/wDfR4x06UAWaAPC/Gnw50XwpO+t6Xa+M3luNX8N6e1zqviS41K1aOPW7CVSiXFzJIGZp5FBK/L5EuNgcGYAPhJ4a8caV4xN14y8L+O9pdzaXk+uzfYLYeXIG8+3k1++8/dlAmIBsbDYHDIAeweKv+RY1j/rwuP/AEW1AGpQB8PftI6B4lvfjR4iutP8JeLr23f7JsnsPgdpPiCB8WkIO3UJ5BJPggg7h8hBQcIKAO0/ZU1S08Oa2nhrVfgt41g1/VprhV8VXXwrsfDFtbWYhWT7NM9q5G0vASCc7ndFxwDQB9W0Acl8V77QtO8AapeeJvh/f+N9Nj8jz9BsNKTUp7zMyBdts/yybGKyHP3QhbtQB+f/APwivjH/AKEPx7/4jRoX/wAdoA/QD4UX2haj4A0u88M/D+/8EabJ5/kaDf6Ummz2eJnDbrZPlj3sGkGPvBw3egDraAPlL9qvVLTxHrb+GtK+C3jWfX9Jmt1bxVa/Cux8T21zZmFpPs0L3TgbQ84JIxtdHXHJNAHF/s3aB4lsvjR4dutQ8JeLrK3T7Xvnv/gdpPh+BM2kwG7UIJDJBkkAbR85IQ8OaAPuGgDzT9pG1vL34L+IrXT7C/vbh/smyCw8MweIJ3xdwk7dPnIjnwASdx+QAuOUFAHw7/wivjH/AKEPx7/4jRoX/wAdoA+4v2brW8svgv4dtdQsL+yuE+174L/wzB4fnTN3MRu0+AmODIII2n5wQ55c0Advcf8AIz6f/wBeF5/6Mt6AKvjjwpF418Nz6C+oTWEpntry1u4VVmt7q2njuLeXa3DBZYo2KnhgCD1oA8Xg/Zg8bWi2EenfGq+0u10qLyLbTNNn16DT5I9oRUliOss4WNQPLWCSAKfvB1woAPRPhN8Jv+FajUry81tNT1HU1jhkkhhmihSFJricACeeeZ3ae8upXkkmdmaU9AAAAehUAYOpeGpbq/e/s9QEDSncwYS5DFUU4aKWM4IjTIORlQeKAMDVWvo9Yj05pri5sLZ4oZbqSJpPs7Om1kwSRJvBxuYMVEhGeaAO9oAyvDn/AB4Tf9f99/6VS0AfPH7R3j/4u/Dbxj4hvfhJ8N/Emvazr/h3QrOzv7HQ5760tPIu9UecuURlMgWeEBD/AM9Nx4GCAfP3jf4z/treL/HPhXxtZ/Bfxpov/CLqrLp1n4evza3czDE7yq0eWEi5UKSdin5TuyxAPuj4I2F/pXwY8A6XqtlcWd7Z+F9Kt7m2uI2jlhlS0jV0dGAKspBBBGQQQaAOm1/QtK8UaFqXhnXbX7Tpur2k1jeQb2TzYJUKSLuUhlyrEZBBGeCDQB8Z/wDChvgl/wBGwH/waeNP/lZQB6/+zh8Jfhp4Q13V/E3hT4THwjqS2iWJn+265L58Er73XbqVtAvDQxnMYc+pUEbgD2fxH/x4Q/8AX/Y/+lUVAGrQB8cfGT/gn9oHibx/p3jTwJey2+nahrNvL4k0ia4O5reSdftM1tK2SrBGdtjZHXaeiEA9H+EP7Mt/+z747hvPhv411W/8G6ussOsaNq0qMbeQRlorqFkVQzb0WMrtB2yZJO0UAfQFAGL4m0a+16KHTIb5rS0cs106ffcDG1B7HJJPt70AcrL8JrVtXiWC6lTTUiUyF2DSySbmyBgAAY2847/kAd9ZWdvp9pFY2keyGFQiLknAHueaAKNv/wAjPqH/AF4Wf/oy4oA5j4z/AAqtPi/4Kbwy+rz6PqFpdw6ppGqW67pLC/hOYplGRnGSCMg4Y4IOCAD55+Ovwz/bN8afDqWx13WvAmt2ehzQX50rRba5W514QuGAnWQBSQVD+VGQGPA5CigD3D9nb46aX8fPAQ8UW2mzabqVjObDVrGRTiC6VQWCMfvIQwI7jODyKAPUaACgAoAKACgClrf/ACBb/wD69Zf/AEA0Ab9ABQAUAFABQAUAFABQAUAFABQAUAFAH//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMWD/kI6p/19p/6IioAsUAFABQAUAFABQAUAFABQAUAFABQAUAFAEU1rBcSQSypue2kMsRyRtYqyZ9/ldhz60AS0AFABQAUAFABQAUARQ2sFvJPLEm17mQSynJO5gqpn2+VFHHpQBLQAUAFABQAUAFAEV1awXtrNZXSb4biNopFyRuVhgjI5HBoAloAKACgAoAKACgAoAKACgAoAKACgAoAKAImtYHuo71kzNFG8SNk8K5UsMdOSi/l9aAJaACgAoAKACgAoAKAIra1gtIzFbpsRpHlIyT8zsXY8+rMT+NAEtABQAUAFAHG/8KX+D3/RJ/Bv/gitf/iKANnw74L8HeEPtH/CJ+E9G0X7Xs+0f2dYRW3nbc7d/lqN2NzYz03H1oA1Lm1gu4xFcJvRZElAyR8yMHU8ejKD+FAEtABQAUAFABQAUAFAES2sCXUl6qYmljSJ2yeVQsVGOnBdvz+lAEtABQBDbWVnZCUWdpDAJpWmk8qMLvkblnbHVj3J5NAE1ABQAUAFABQBS1v/AJAt/wD9esv/AKAaAN+gAoAKACgAoAKACgAoAKACgAoAKACgD//W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMWD/kI6p/19p/6IioAsUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAUtb/wCQLf8A/XrL/wCgGgDfoAKACgAoAKACgAoAKACgAoAKACgAoA//1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDFg/5COqf9faf+iIqALFAFPWdW0/QdJvdd1e4FvY6dbyXdzKVLeXFGpZ2woJOFBOACamc404uctkXTpyqzVOCu27L5nNeDPi14K+IF0tr4Xl1qYyW32yOW68P6hZQSQ/LhlmuIEjbO9SAGJIOQCATWsoSi2pKzW5kpxaTTvfY7GoKCgAoApafrOl6rPf2unX0VxLpdz9jvFQ5MM/lpJsb32Sxt9GFC1ipLZ3t8m0/uaa9UNpxdn/Vy7QIKACgAoAKAKMMkh1u7iMjFFtLdlXPAJebJA9TgfkKAL1Ju2oHBeEvjh8OvHN/a2Hha91m9N60i29x/wjuoxWjlN27FzJAsOBsYZL4JGBk4FOKbSkuqT100aut+6HUXspOEt07PrqnZrTzO9oEUr7WdL0280/T76+ihudVna2somPzTyrE8rKvuI43b6KaF7zcVva/yTSv97S+aHZ25uhdoEFABQAUAFABQAUAUZpJBrdpEJGCNaXDMueCQ8OCR6jJ/M0AXqAODuPjf8M7XxDJ4am1+cXEF+ulTXI026axivWIAt3vBH9nWTLBdpkBDHafm4pQ/eNJdb26Xtfa++z266BU/cpufRJvyTtZvto09ejvsdjpmqWer28lzYmYxx3E1s3mwSQnzIpGjfCuASNyNhgNrDDKSCCWtUn3Dq12LdABQAUAFABQAUAUdGkkltJGlkZyLu6UFjk4E7gD6AAD8KAL1AHjPwM/aY8PfHHxT4r8NaXo72A0CYvp1w1x5i6tY+bJF9qjGxdq74wCMtjeOc5AAPZqACgDz74/fE27+Dnwh8RfEfT9Nhv7rSI4BBbzMRG0ks8cKlsc7QZQxAIJAxkZzQB8o+Ev2xP2sPG3gLxN8SfD/AIA8AzaJ4TCNqEjWt4HIIy3lr9p+bYuHbphSDzQB7L+x3+0x4n/aI07xOni3QtLsL7w9LaESacsiQzR3AlwNkjuQymFsndg7hwMUAfRVABQB4d+0V+0P4o+AFtBrcvwzstb0S8uobG1uB4gNvczXLo7lBALZ+AEPzbueOORQB6X4G1nx5rNncTePPBFh4anR1EENrrP9o+YpGSWbyY9hB4xzn1oA6agDO8Nyyz+HdKnnkeSSSygd3ckszGMEkk9SaAON1nWfiRqvxJ1Twd4P13w1pNnpOh6Zqckmp6HPfyzS3VxfRkAx3cARVFmvGGJLnkYxQBPoPi/xVo3imHwP8So9PkutULtomsaZaSW9nflIzJJbtE8krQzoqO+0yMHRSynKsqgGr4+8faZ8PtNsr2+07UdSudVv4tL06w0+NHuLu6kDFY18xkRflR2LO6qAp5zgEV5SUIq7d/uSu38kOyUXOTslb8WkvvbS/wCAUtF+K3hy90nVdW8TwXXg3+wrlbXUovETw2v2ZmVWRjKsjQujB12skjDnHBBFJtKKnfRtrtqumv3+aegk25OFtUk/k+v4NPs1qdBZ+KPDWoW8V3Y+IdMuYJ7T7fFJDdxuklr/AM91IODH/tj5fenP93zOenLa9+l72v2vZ29H2FH3mlHVu9vO1r29Lq/qinJ8Q/AEN+NKl8ceH0vTbm8Fs2pwCUwCPzDLs3Z2CMh92MbTnOOaTXK5X+zv5dNe2rW/ccfeUWvtbee+3fZ7dmRN8Tfhsnh1fF7fEHw0NBeb7OuqHVrcWjS/3BNv2FuDxnPFOXutKWl9vP0CPvX5dbb+Xr96Oht54bmGO5tpklilUPHIjBldSMggjggjvTacXZiTUldbElIZ4xpvxw8XfEvxHr2ifBDwdpWp6b4Zu2sL7X9c1KS1sprtfvwW6wxSPKRkZc7VAweQykgG58LvjVB468Sa/wDDzxH4fk8NeNfDBVtQ0l7kXCSQNgpcQTAL5sTBk5KqRuUEDIoA9LoA83+KP7Qvwt+DurabonjnXJra91NBMkUFrJO0UG4r5sgQHC7gQMZY7WwDg4AOb1X9qH4eeAobmb4geIgPtetXdrpi2Nq9wWs49mJT5YPy/OOerfwhsHAB7FpWqafremWetaTdx3VjfwR3VtPGcrLE6hkcH0KkEfWgBdT1Kw0bTbvWNUuo7aysYJLm5nkOFiiRSzuT6AAk/SgDhPhr8ffhj8V11U+E9bkzoy+ddLeW72xEHOJhvABTg57rxuC5GQBPhn8f/hh8W9X1DQvBOtTXN7pyGd457SSAywBgvmpvAyu5lBzhhuGQMjIB2mvyyw2MTwyOjG9s0JUkHa1zGGH0IJB9jQBo0AfLX7Mv7VfjX4meOrr4f/GHS9K8M63c2Ud5ounQaTdW0l7GyGVnEk0zjAiG4LsG5SWDfKRQAfD79qvxr8SP2i18CeEdL0rWPhsb24sm8QwaTdROsi2c06J5xmaMkvCQGKLvUEhRkGgD6loAKACgAoAKACgClrf/ACBb/wD69Zf/AEA0Ab9ABQAUAFABQAUAFABQAUAFABQAUAFAH//Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMWD/kI6p/19p/6IioAsUAct8VbS81D4X+MLDT7OW7urnQdQhgt4ozI8sjW7hUVRyxJIAA5JNc+Ki50JRW9jqwMlTxVOUnZKS/M8e1D4Y+MtC+AYhTxT4/8AEc1xpmjpfaFLNAs0Vmk1u17BbiKGKXzDbrNHtLliDt5Y16ONcHi2pPmh7S7b1urvtum2m7LW3Y83BKr9Xi4e5PkaS0SUnHTe9mnorvRvXuuUg+Fen+M/E9vommeAdcsfhXdeLrCeDSbnTrqxiVotKvzdzfZ3CyQW8krWqHcER33DB3ZbCnFpr2uutRryi4wUV5e+pyit0uysjapNWaopp2gpeb59bekbKTt821dXtF/Z+8Pz654fvtV8AXr/ANqeOPEsWs+bFOqPpOb5rWKYZx9lZ4bR0VvkZmUjJc7opfvVH2v/AD7bfnPnha/95Jyt1VrrYbXLGSjpaUFHyioWaXl0fe9meeeNvBvjCbwXb6BN8Pdbm1DRvCktroU9x4c1PVrkTLe3IijtWjkSLT5o444GM8m52QxbQwUK0qrUny1Zp89qLdtG3yRc3fpaV04rXmvfV6UqcYSlTXwOVZJXurc8lFW63jblk9Eutk2fRvwP0Kz0Pxb8THXwnfaVdatr1vqYup9NlgS8glsYCCsrKFkIn+1FlBJRnbcAW520VGNKP2XP01nKzXdcnKk10SM03NxnLdwh66RV0+zvfRnrtQWFABQBzPxC8Ef8J94fOiJ4p8QeHpllSeG/0TUZLS4jZT0JQgOhGQVYEc54IBABsaJpMOg6RaaNb3d9dR2cKwrPfXUlzcSYH3pJZCWdj1JJoAZB/wAh69/687b/ANDnoA0D0qZfCwPmv4X/AAr+I+j/AAAuLnTfGPja08RT6Bq0Vh4dunt7e3tbuTzvJ2K0KzRsGKspaXgkHpTxCtQjBe97lNPurRjdK1tVZx8vXU1i1LGTm7RXtZvya55Wb3unpLTffbQ5C4+H0OvRS6V8Nvh54v8AD/hO+sPD9rr9nc6feWMtxqH9s2jPKFkAkklitluTNcpxgqS7Yyu9oqs3o6fPFxXSyjU5tPsxd4Kztdra6bfLzSjRSd/bKE+Z77pWXaTvzNWT0fZpHTD4X6T4W+JujG2+HF6PDuh/EUyaYlrpU08FlBcaFF+9iVVOyD7eFZnHyJIhJI2nGWFnKMrybu41Ip9r1ItLyXLzpdLNrY1qJckktvcdu9uZX838N+u259PUgCgAoAKACgDH8XeG4/F3hy+8Oyavq2lfbYii3ulXslpdW7dVeOVCCCCAccg9CCCRQBH4L8LL4N8O2ugf27rGsvAC0t9q19JdXM7k5ZmdySBnoowoHAFAFuf/AJD1l/153P8A6HBQBo0AfKfiSy8TWHiTXR4I8NfEPQ/E914j3f2D9gbU/CusI10rm9aWWIw24kjIeRlkjdHz8pZRkwTs6UZfDf3k/sK7cuV76auNrpuySQYpuMaklvy6Na8z5eVKS27KV/s63Zh+OfCeneJbyw8F+N/hN4kktpde13UdS8SQeF76+uI9P/tq6kgsrV4ImZHnGGLnAWFsruMi4zw6j7kpprlhG/eT6JvdJXu+r2utS6kpqMuR6uWnXlXLG8knpd2SXZq/RE9p4R8azfGJNZbTNct9Uk8Z213pt4nhK8eaPQNqFYn1JriO3gtRBvjktnjMgkLfI7kGt8MnCfvP3r1Ofs7uVtdVK65eRx2aWis751oU5w/d6R5Ycm900o3stHF83Nzc26bu2nZfYNQMKACgDi/Fnwyh8V+KtH8UN408XaWumcT6dpmt3FrZ3yhtyiaJGAyG6lcFlJVsjGADtKAM/Q/+PKT/AK/Lv/0okoA4v9oI+PpPhD4j034YaHPqniTVLU6fZxRTRxGITfJJLvdlAKRlyOc7gv1oA8C8Kfs0fFP4D/EX4b+MfCev3fjOyso28Pa5ZpbwWq2OmSkuxQ7gZUWaSSXnLFlX1IoA+kfiJ8N4/iCmmj/hM/Ffh59PuPMZ9C1iay+0xEYeKURsAwIxhsblIypGSCAdbBClvDHBGXKxqEUu7OxAGOWYksfckk96APC/25Fdv2WvGwRSxA044AzwNRtiT+VAHzX8N/jR8EvhJpXw0+Flxrt9qVjd2U8/i2bTrqE6XLPqY8qWK9BUvJ9nQJyjDCqPvHIoA679gHwrpNlrnxt8K6Xrj6loy3On2VpqlhdNEbi3zfBJY5oiGRyjKcqQVJ7GgD6y+HPgEfD3RZNJfxf4l8STSymV73XtTlvJyOiqN5wgAA+6Bk5J5NAHV0AfIf7SOr+GPiH8evhnol34+8F2/hLwZqUt/wCIJbrxTp0LRXccozbSQPOJiw+zhCBHx5xBIwdoB7Vpnx507U/irL8G4vCeqr4js7id75C8Xk22nKgaG9Mm7DLL5kQEa5kUs24AKCwB6lQBl+Ff+RY0f/rwt/8A0WtAHhfxr8OePvFHjbxnp3gO6dinhrwxNqumwTfZrnVtPW91nzrOG558h5F43Y5+7lQSaADTPDnj/Rfirot/4guGtfDWqfErUbjQtIuJ/tU9uDo2sedcCXjZFPJmVIPm2BxgrkrQB6H8cvD2reJ/CVtpll4A0rxrp5v4zq2i3kqwzT2m11L2srsqRzo7I4LMuVVgGUkGspRTqRclor7bp9GndeadtbM0i2oyUXZ+ez12fr0eya2PJ9J+GXxH024sNf8A+ED1q88MaD4pg1TTPBur69BqF/Bbiwnt5JYpZpmhG2aaOVIWnO3y3IZWYLXRGbi4ynrK01dbpS5OW+137sk30jNLWzOecedShFWXubvRtNt2stN477uPQqaV8Ofi14JOs65pnwvl1IeKtN8Q28Gi2eqWUX9iNd3Ymt4ZGklWPYQWLGEuFYsAGyCeWtS9phKmDSS5oQjdbXTrNq2jdlVSXfltotTqp1EsXDFv7Mm7dWnGkr3W15Um3u/evq0y5L8BPE1x4P8AF73HgzT7rXLuHwutpFdTQ/6db6fbWZubPzAWCCRoriL5sK27n5Tur0sTVpyxMq0dV7aU3ZauN423ts1dJ7NdDjw9Oaw9Oi5crVFQvrpO9S+3k4ptdH1tYj8X/Dr4heIvF+lfETS/hZf+HLOzvr8Sabo9xo7axKZrO3iW8kS6MtiTmF4iFbzBGynJyy1xRgoKV9eZSVuivJPW+vvWvK3ktdTa7mtNLOPfWyktLfy8y5ebz2909n+CPhPUvA3wq8O+FdXtpra7sbZhJbzXkd09vukZxEZY440bYGC/IgUbcLkAE715JySi72UVfXpFLrr03er3dnoZ000m2rXcnbTq2+mnyWi2R3NZGh8qfsXavp3gBdU+CFxeR6gl3d3PiHw1rVpiS21fTXWIFt6j5Jk+Tej4I3gDgZIAnwW1jT/if+1Lrnxtt7tdP0jVNAfSfDVpcNsu9WgheAzXZi+8kQJXaHALCRCPutgA+rKAPmX9r34IWfxk1XwxpPhjQrmTxncyx28mrqXFrpmkLIWlluDnYxDMRHH99y77chWKgHFfGH4HaX8QPCcvg/wf4ZvL7xjB4qutM0W8WR0t9OsVaHz57xx8nlKi8A/OzsBGGO5SAfW/g3w1a+DPCOh+D7GZ5rfQ9OttNikcYZ0hiWMMfchcn60AWtestJ1PQ9R03X4o5dMu7SaC9jkJCPAyESBiOcFSc0AfM/7P/wAGZfh5pvxL+IsWlRaJpetW09v4b0/xJM8SxadGjsJ74t88SSHaxVgHRFbcATgAHPfsQaH4J1jxz4t+IfhLSZtChgsLbTotGutV+1Twi4WKeSYKV3G2Zo18mZmy6huBQJH1l4j/AOPCH/r/ALH/ANKoqBmrQB8qfB39oK+/aS+Nek6z4O+D+jQ+HPDWnt/aviLV7VJNUsp5oJAILSZW+RTISpGDuTeTsyBQAfAL9oK+0P4jRfs0eOfg/o3g7xS+oXGyPw3apa6UYFtZbgziPcTuYRIAQTuD5O0qVIB9V0AFABQAUAFABQBS1v8A5At//wBesv8A6AaAN+gAoAKACgAoAKACgAoAKACgAoAKACgD/9H9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAxYP+Qjqn/X2n/oiKgCxQAUAFABQAUAFABQAUAFABQAUAFAES20aXcl4N3mSxpE3PGFLEf+hn9KAJaACgAoAKACgAoAKACgAoAKACgCJraN7uO8O7zIo3iXnjDFSf/QB+tAEtABQAUAFABQAUAFABQAUARWttHaRtFFu2tJJKcnu7lj+rGgDnPFHwz8EeM9Qj1TxLon2y6ihFukn2maPEYZmAwjgdWbnGeaAMf/hQ3wn/AOhU/wDJ65/+OUAdhoOg6T4Y0mDQ9DtPs1jbbvKi8xn27mLHliSfmYnk96ANCgCvqGn2GrWM+marY295Z3UZint7iJZIpUIwVZWBDA+hFAHFf8KB+BH/AERPwF/4Tdn/APG6AOm8NeD/AAl4Msn07wf4X0jQrOSQyvb6ZZRWsbORgsVjUAnAHPtQBr0AFABQBx9t8I/hvZ6zD4is/CNlDqtvqlzrSXybhOby4UrNI0mdzBlbBRiVwqgAbVwAdhQBBp9lFp1hbafAztHawpChcgsVVQBnHfigDn/E3ww+GvjW/j1Xxl8PPDOvXsUIt47nU9Jt7qVIgzMEDyISFBZjjOMsT3NAEOhfCD4TeF9Vg13wz8L/AAjpGpW27yLyw0S2t54tylW2yIgZcqzKcHkEjvQB1tABQAUAFABQAUAFAHMeHPhf8M/B+ovrHhH4d+GNEv3jaFrrTtIt7aZo2IJUvGgYgkAkZxwKADw58Lvhn4P1FtY8I/Dvwxol+8bQtdadpFvbTNGxBKl40DEEgEjOOBQB09ABQBVsNL0/S/tH9n2kcH2u4e6n2D/WSvjc59zgUAWqACgCC+sbLU7KfTdSs4Lu0uo2hnt54xJHLGwwyOrZDKQSCCMEGgCKHSdKtr59Tt9Ls4ryS3jtXuI4FWVoIyxjiLgZKKXYqucDccdTQBLe2UV/CsEzOFWaKYFSM7o5Fdfwyoz7UAT0Ac54Y+G3w68E3M174M8A+HNAuLiPyppdL0qC1eRM52s0agkZGcGgAt/ht8OrPxMfGtp4B8OQeIWkeU6tHpUC3pd1Ku3nhd+WVmBOeQSD1oA6OgAoAKACgAoAKAKWt/8AIFv/APr1l/8AQDQBv0AFABQAUAFABQAUAFABQAUAFABQAUAf/9L9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoA54XtnbalqaT3cMTG5QgPIFJHkRetAEv9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQAf2rpf8A0ErX/v6v+NAB/aul/wDQStf+/q/40AH9q6X/ANBK1/7+r/jQBT1jUtOk0i+RL+2ZmtpQAJVJJ2njrQB1FABQAUAFABQAUAFABQAUAFABQAUAFAH/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDnL/xR4Z8Jf2jqXirxFpmjWkmopAlxqF3HbRtIbaMhA0hALEKxx1wp9KwxGKoYSPPiJqK2u2kr9tTuy/LMdm1V0cBRnVmldqEXJ20V7RTdrtK/mjO/4XZ8Gf8Aorngv/wf2n/xyuP+2st/6CIf+Bx/zPX/ANS+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5EP8AhdnwZ/6K54L/APB/af8Axyj+2st/6CIf+Bx/zD/UviT/AKF9f/wVU/8AkQ/4XZ8Gf+iueC//AAf2n/xyj+2st/6CIf8Agcf8w/1L4k/6F9f/AMFVP/kQ/wCF2fBn/orngv8A8H9p/wDHKP7ay3/oIh/4HH/MP9S+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5EP8AhdnwZ/6K54L/APB/af8Axyj+2st/6CIf+Bx/zD/UviT/AKF9f/wVU/8AkQ/4XZ8Gf+iueC//AAf2n/xyj+2st/6CIf8Agcf8w/1L4k/6F9f/AMFVP/kQ/wCF2fBn/orngv8A8H9p/wDHKP7ay3/oIh/4HH/MP9S+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5EP8AhdnwZ/6K54L/APB/af8Axyj+2st/6CIf+Bx/zD/UviT/AKF9f/wVU/8AkQ/4XZ8Gf+iueC//AAf2n/xyj+2st/6CIf8Agcf8w/1L4k/6F9f/AMFVP/kQ/wCF2fBn/orngv8A8H9p/wDHKP7ay3/oIh/4HH/MP9S+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5EP8AhdnwZ/6K54L/APB/af8Axyj+2st/6CIf+Bx/zD/UviT/AKF9f/wVU/8AkQ/4XZ8Gf+iueC//AAf2n/xyj+2st/6CIf8Agcf8w/1L4k/6F9f/AMFVP/kQ/wCF2fBn/orngv8A8H9p/wDHKP7ay3/oIh/4HH/MP9S+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5EP8AhdnwZ/6K54L/APB/af8Axyj+2st/6CIf+Bx/zD/UviT/AKF9f/wVU/8AkQ/4XZ8Gf+iueC//AAf2n/xyj+2st/6CIf8Agcf8w/1L4k/6F9f/AMFVP/kQ/wCF2fBn/orngv8A8H9p/wDHKP7ay3/oIh/4HH/MP9S+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5EP8AhdnwZ/6K54L/APB/af8Axyj+2st/6CIf+Bx/zD/UviT/AKF9f/wVU/8AkQ/4XZ8Gf+iueC//AAf2n/xyj+2st/6CIf8Agcf8w/1L4k/6F9f/AMFVP/kQ/wCF2fBn/orngv8A8H9p/wDHKP7ay3/oIh/4HH/MP9S+JP8AoX1//BVT/wCRD/hdnwZ/6K54L/8AB/af/HKP7ay3/oIh/wCBx/zD/UviT/oX1/8AwVU/+RD/AIXZ8Gf+iueC/wDwf2n/AMco/trLf+giH/gcf8w/1L4k/wChfX/8FVP/AJEP+F2fBn/orngv/wAH9p/8co/trLf+giH/AIHH/MP9S+JP+hfX/wDBVT/5E6Hw94p8M+LbJ9S8KeItM1q0jlMDz6fdx3MayAAlC0ZIDAMpx1ww9a7MPiqGLjz4eaktrppq/bQ8jMMsx2U1VRx9GdKbV0pxcXbVXtJJ2umr+TNOtzhCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/5AWpf9ec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf//U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAPAv2lLGy1P/AIQbTdStIbu0u/irocE8E8Ykjlja2IZHU8MpBIIPBBr5fiiEascJCaunXppp7Na6M/T/AAvrVcNVzWtRk4zjgq7TTs01yNNNapp6prY9J/4Un8Gf+iR+C/8AwQWn/wAbr1f7Fy3/AKB4f+AR/wAj5X/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SD/AIUn8Gf+iR+C/wDwQWn/AMbo/sXLf+geH/gEf8g/104k/wChhX/8G1P/AJIP+FJ/Bn/okfgv/wAEFp/8bo/sXLf+geH/AIBH/IP9dOJP+hhX/wDBtT/5IP8AhSfwZ/6JH4L/APBBaf8Axuj+xct/6B4f+AR/yD/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SD/AIUn8Gf+iR+C/wDwQWn/AMbo/sXLf+geH/gEf8g/104k/wChhX/8G1P/AJIP+FJ/Bn/okfgv/wAEFp/8bo/sXLf+geH/AIBH/IP9dOJP+hhX/wDBtT/5IP8AhSfwZ/6JH4L/APBBaf8Axuj+xct/6B4f+AR/yD/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SD/AIUn8Gf+iR+C/wDwQWn/AMbo/sXLf+geH/gEf8g/104k/wChhX/8G1P/AJIP+FJ/Bn/okfgv/wAEFp/8bo/sXLf+geH/AIBH/IP9dOJP+hhX/wDBtT/5IP8AhSfwZ/6JH4L/APBBaf8Axuj+xct/6B4f+AR/yD/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SD/AIUn8Gf+iR+C/wDwQWn/AMbo/sXLf+geH/gEf8g/104k/wChhX/8G1P/AJIP+FJ/Bn/okfgv/wAEFp/8bo/sXLf+geH/AIBH/IP9dOJP+hhX/wDBtT/5IP8AhSfwZ/6JH4L/APBBaf8Axuj+xct/6B4f+AR/yD/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SD/AIUn8Gf+iR+C/wDwQWn/AMbo/sXLf+geH/gEf8g/104k/wChhX/8G1P/AJIP+FJ/Bn/okfgv/wAEFp/8bo/sXLf+geH/AIBH/IP9dOJP+hhX/wDBtT/5IP8AhSfwZ/6JH4L/APBBaf8Axuj+xct/6B4f+AR/yD/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SD/AIUn8Gf+iR+C/wDwQWn/AMbo/sXLf+geH/gEf8g/104k/wChhX/8G1P/AJIP+FJ/Bn/okfgv/wAEFp/8bo/sXLf+geH/AIBH/IP9dOJP+hhX/wDBtT/5IP8AhSfwZ/6JH4L/APBBaf8Axuj+xct/6B4f+AR/yD/XTiT/AKGFf/wbU/8Akg/4Un8Gf+iR+C//AAQWn/xuj+xct/6B4f8AgEf8g/104k/6GFf/AMG1P/kg/wCFJ/Bn/okfgv8A8EFp/wDG6P7Fy3/oHh/4BH/IP9dOJP8AoYV//BtT/wCSD/hSfwZ/6JH4L/8ABBaf/G6P7Fy3/oHh/wCAR/yD/XTiT/oYV/8AwbU/+SOF/ZZsbLTLL4n6bptpDaWlp8SdaggggjEccUaiAKiKOFUAAADgAV5XC8I0o4uEFZKvUSS2S00R9V4oVquJq5VWrScpywVBtt3bb52229W29W3ue3V9QfmAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAUPEH/ACAtS/685v8A0A0AX6ACgAoAKACgAoAKACgAoAKACgAoAKAP/9X9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoA8I/aH/4/Ph9/2VrQP/Sc181xL/zB/wDX+n+p+l+G3/M3/wCwHEf+2Hu9fSn5oFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAeL/szf8ANVv+yna7/wC0a+a4a/5jP+v9T9D9L8Sf+ZR/2A4f/wBvPaK+lPzQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAKHiD/AJAWpf8AXnN/6AaAL9ABQAUAFABQAUAFABQAUAFABQAUAFAH/9b9UqACgAoAKACgAoAKACgAoAKACgAoAKACgAoA8I/aH/4/Ph9/2VrQP/Sc181xL/zB/wDX+n+p+l+G3/M3/wCwHEf+2Hu9fSn5oRykiNyDyFP8qxrvlpSa7MqO6PhTRLj4rXfwNtvH2gXfxK0+KL4eazqHibWtf8TSXVpqUrabL9nNjFJdSyRSifZKJESEKikE5YLWtZ+zhK+kXGNl9rnvTd0+i5edO71utNLrSk41a9mry9rLbRKKc01ZWX8qWmlr37+rQftEeP5vG0nh3wx4PudT0nQdV0vQbyJPDuqXlxemaK3a4uhqESm0tRCtwG8uXczrGxLR71rfSrWcmrRlOaXSyjKUea70kuaLVlayW7ehw006WFh/MqcZd7txvypLVO1tXe7drJK7vN+0D48X4knwvpdloPiW3u73WNOtLLTNN1CIQ3NnaTzxRHV5gLO4mdoPLkhjRTCzkFn8tieanzVaFSpFXapua7NqcI2XWS974lZXVrao7VCn7aEJy5YuSi+rSabbdvhat8Lu33MRf2nvHWl+Db+413T9MvPFEuoaPplppcPhnWLK702e+8zcbqwlDz3McQhkZJLZj55RkAjI3VpLklONOlLmvKS5rPaMHO/L8UW0no9FdNyte2EOZRlUqx5XGKlytrdzUElOzjLWSV0vRO6PXfgx468X+NtA1S68Z6DPp91pmpyWUF22jXukpqduIo5FuY7S9HnwjMjRlWLjdExDEEUVeWnSjUe9m2rp2s2vxSTs7NXtra7Sb53DfbW1t+nXZ6X676bHlHiz4i/Gbxh+zx4t+KcR8N6b4Z1nwdq2p6ZFYTXUOsaWBbs1q7ThjHNIwGXCrD5RwA0mM1lODhTgqvxt03o9LylFuN3Z2s/i6tfDZ3W0X+9kobRc4u/aKkuZefMlZdne91Z2vE37QPxS+Gaa7onjTQfD2pa4lloFzpK6LBeyRRPqd5NaCGZB5k1yYmhL7okRphhVjRjWk7Tq+yjvz8t7X05JTb5VrooS0vbZtpXMqMbU4ztePI3a+t4uKtfb3nNa201+LS9vSvjj8WdWh0vwlF4bsbLxHrniWbRtO1nV/D+paVYT2cVgb2S7Gn3LJcllCvCI/N2s6lvMC5AcY+2kor3Woyk+ukZQirbfE5x32tL4rK7knBOe691Lday5tHo/hUW9N7paNmL4u+K3xG8AfF/TNE16PTbrxT4i8NWukadbW93cx6AL+XU5kju5jJ/qA0SqdnzSM2IY3kOGqMPNVqs8OtHL2b72SjWlKz91ybUdErXsm7JOS0rLkpUq09Yx9re2jl/AUb72Sbd5O6gm2tZcr9R/aI8SeP8AwT8DvEvinwNq2n2niHSrAXC3M9kZYsqR5hSIsQGIzt3FgOMhqdnLEUYQ0UqlOOvaU1GztbTVXtZ2vZp2aVKKcJe03UZO67qLd/w0v1te6un5x4z8WfHLwv8AErxTe6NqXhe6m8P/AA4sda1NLxLwWLyx3WosVtrZZcxvKke0ys7FPLTKyAgCJVVQp1qr1hFxbXV+67pPZdX16K3VFChLEVcPRv78+dL+VXcLN9Xa9um7d+jW6/ab8eat4umtPB3gO5u9M0mbSbe7so/DuqX89893Bb3E3l31un2S08mK5QgTbjIVOfKUqx6vYqOIdKT09o4X2sk+Vzbelr3vFa8qve7suOGI9pho1Yr3nTU2t7trmUFbW7StzPTmdrWTZ2/7T48Yz/D3TtM8H67FpT6r4n0PS76YvcxyPbXOoQwsiS28sUke4uocqwJjMigqWDDKjReIxEKXRqb/APAac5r/ANJ++3S6fdGShCbW9tNurSe6euunbfexlad8WPEvhvwfqNpNYafNceGfHOi+BkYvcOs9vO+nxSTFpZHkaQC7kILOxOxSxY7ib544mVGrt7V1b7ack60VayS/5dpvS2rtbS2M4OjGolryRi/m4xbvv1l+R47bfED4l6R4X1HXvDnjG5XVNM8BeOtVgl1GSW7hWW11/CSGJ22tIkKskZYMF4BBTKnnptxwbmt/ZYF/+BUqrk/WTs5Pq1d7I75wi8SoNaOpWXbZxt8l2Xy1PSfGHxw+KvhK68M+BIrfTdQ8U3fh+XxBqepWXhLVtTs2QSCOC3jtbJnmiaQk7pncomw4Ri4Vda+larGnHSny6d3Jy05rNR+B73eqsnaTXm4dqWGpVZv+Je3dKKi27ac3xpacq9NE7mpftCeOtN8V+AfBt74N0/S9U+KGnWd3pEF/MySaRMiCTUoL6NmV2ZIz+52KpeTMbBMbqtwjLFTw0HdQfNfTWnrsk3790+8bPm1UJXbk44dYi1r+7Z6e/eyetvds031Vrfajbpvgn4j+KXiHxL8Rbfx1reiXumaJ4ouNL0uKy094JoY1gt5VBcuQ67Zu4Lbtx3bdqrlQ97CU6s9ZS5tv7tSpB3/8BXLbaNr3leT1rLlxEowfupR9dYxf5PXz2srIzvEvxc8d+H/jPb+ENTtdJ0Xw1cahZWFjNqOj6g41cTQ7neHUos2tvMsuY1tpk3SGPh18xKVGSm3zb+/ps7RjzJq/xXs7pWcY3etrNVYuMU6a6Jt9NZcrTtrGys03dNtLTc5DwJ+058QfGLxeJh4Nig8L6pp+pX9vLf6NqemW+jxwQvLbTXmqzRtaTwzCPDNAuYjIuPOALVSi40pOo0pcil1tduPu62bdpXTVk+V6K6Y5x/fezp6++4920uZcyaulqvhetnq7pxcNn+0p8SpNK16KysvD2uaraTeFxplw+ianodncjV797Qptuy0skaGMst1GCjhuEypBbhJyhC1m5uLvo9IOV+XeL/utt+ZlzqMXUltyuWjvqmlZS0Ulro7I7e28afHPWvFereDvDn/CCS3vgy2sDrT3lvdwxardXKmURW2yV2s41hA/eOs5LtgIApJdLln+8fwKag++kYOcu2nP7setrOS3Ln7slSfxOPPfok5TjFW0u/cd5XVt1F7LkPh98RviroGqpLqZ0bUPCus/FDXfDEa3EtxLqaq17dmOVZWby4442i8sQ7Gyigh14Wpw37yFGFT7UJWt3ipy97vdRa8tHd6pLEL2TrVKf2XTvf8Av+yhZejnzeeqst31f7RWneOPEHiL4aeE/DfiOHTNM1rX7mLUYzNewPcNFp11cRq0tpcQyeUPJYlA3LiIk7VZW0wcb4l1JbU4c9vSpTj10b97S6a3unpa6n+7SjH4m0r+TTfqttWmnbRNamZonx4+IN3B4X8eahpXh0eDPG2uXGiabZQrMNTs8C48ieaUuYpd5tm3xLGhjDj53KtXPKUoUlKS96VN1F2X7v2ii+/u/aulzaJNO5cqdpVEtqc1CXW/71UW12tJrTW8dbrY7n4DeLfiF4/+Hej+PfH0Ph+1PiKwtNTsbPSEmP2eGWINiWSVjvY5DYVVCZ25fbvbprU1TfJ1X+S09U73fXSyRzQk6jbW23ndN3fptZf52XjGseNfjxf/AA78Valq3iHQru+034oabomhxWUU+n5VNbto/JnmVmJgdWCHCM20tuMmcVhSjzxwsnrKTlfotPaxenVLlTS6pJO7u3tirQqYmEfhjGPr70KUlbz953v1btaNktnX/wBoj4k+FJrvwHrGmaNe+LIvFieHk1LSdD1G8tFt20tNRa4/s6BpLqV1R/L8tJME5cuigilB+1ajHTSbel9IOK6WtzOcVrotdXom5R5OZtXVotK9viclq+tuWT0WuistWvXfhT4u8W+OPh/BrviTw9Lo2tNLdWxjubC5tEmMUrxx3It7gLPFHKqrII3+ZQ+MnG43VTcFKno2r2etn2drX19NOzIg0qjjPVJ7rS6snpf1t1V0+h454N+K3xNTwL4F8T/FHUdO1a41Pxtqmn+ZpMdxYFLe1i1XIkRJdk4/0RQqONuCpYM6iSsalaFChTxDV/3PtH5p0YzXlzau7slf4VFGjoynVq0U9pxiumvtVF69uy3t8Teozxp49+Mutfs/XHxL1+fQNP0TXNN0rWbOLw+14mp6cJr21dLdpAzC73QSMGaMQncNgSQPkdVaDwOKhSrauNSmnZb++lJcut12d/e/lRnBuvSrOmrXp1rXdmv3c+WV9LO+uy5XrzaGhqf7S3i2fwjoHinQtDskj8d+IJ9N8PKmm3urXFjYW8UrzXF5a2eZZbgmBx9mj2GLdiRwUfGUffdOF9ZQdRtK6Ufd5VdO2vPFOV+W7aV7Jy0lFL2kknaLUddG5Xd3qtIqzsrXdk3bmtFY/ij8d/EOqfCgWkGl+Gj4g1fWNN1m01TQbuI3qWsM7xXEcU7JPbxypCJFRsOrOgZnUEPdKKliLS+H2XO1e7TVSnFq63fve7pazbcW7cudRNUZOL95TUU7aO8XJaeVmnrutHa9+j8MfFvx5e/GafwH4ttdJ0SynvNRt9O0670jUILq6gtwGhubbUDus7wyIPMaBBG8SscljGwMULVIPm+JRvbqveUdU946r307JtK3vXTrXhJcq926V907xb3Wzurcr3Sbv0ft9MAoAKACgDxf9mb/AJqt/wBlO13/ANo181w1/wAxn/X+p+h+l+JP/Mo/7AcP/wC3ntFfSn5oFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFDxB/yAtS/wCvOb/0A0AX6ACgAoAKACgAoAKACgAoAKACgAoAKAP/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDwj9of/j8+H3/ZWtA/9JzXzXEv/MH/ANf6f6n6X4bf8zf/ALAcR/7Ye719Kfmg1lDDaRkYwamUVJOL2Y07O5zEPw68GW/w9Pwrh0bb4XOltopsBPKf9DaMxtF5m7zPuEjdu3e+adRKrpPy/Db8gpzdOfPHe7fzbu/xfoY1/wDAv4Y6n4iXxPc6Bci7820uJoYtUu4rO7mtdv2aW4tUlEFxJHsj2vKjMPLTn5VxanKM3UW92/RvdpbJ+nXXcw9jDk5LaWS9Utk3u15PppsZ3/DNnwafVG1e48Jz3cry6jMkFzq17NaQm/SVL0RWzzGGJJhNJvRECsSCRlVIyhFQpexj8NuX/t26dr76NJrs1dWOiVSU5czfVP5rRNrq7b331vuy1afs/wDwrtdG1PQn0O/vYdY+yi6uNQ1m+vLwC2YtbCO6mmaeHyWJaPy3XYxLLgkmnP37X3Uua/Xmta9972VvTTZsiKUFaK0ty26W7W2t/wADsjpfBngTw14AsLjTvDdpdIt7cte3c95fT3tzdTsqqZJp7h3lkbaiKCzHCoqjAAAd7JR6K/4u7+9u4W1cur/TY5D/AIZs+De7Ug3ha4a21W1v7KWyOr3ps4Ir05uxbW/neVamU53NCqNycEZOZpr2MFCGy5UurSi04pN68qaT5dtFpZK11Jyqy556u9/nZxv62bV99X3Z0HiX4VeAPF02p3HiLw6t7JrGn2ul3bm4mVmt7aZ5rfYVceW8csjusibZA2CGyq4pOzbW7afzWz8t/n1MuVcqg1ok1bydrrz2W/bQyj8A/hg+hvocukalKJdTTWTqEmuX76oL5IxEtwL8zfalcRARgiQYTKfdJFNu/Klpy3tbTffbe/W++nZWfItb63tvrtta+1ulvPuxp/Z/+EL6Ld+H7jwZHc2N9pj6RcxXF3cTNNbvcNcsXd5CzSm4dpfOJ83ed2/IBqk3F3hp8O2luS/La21uZ7b31uVCTi1Jbrn8/j5ee997qKVndWVlpc6zWvCHh7xF4RuvA+v6e2oaNfWR065t7i4kd5oCmwhpS3mFsfx7t+ec55qKq9tLmlvdPTSzTumrWtZ6q1rdAoN4eyp9NNddNtb3vpve9+ph6d8H/Aem2t/arpuoXZ1TSBoV7Nf6xeXs89jvncRNLPK7nDXM2G3bgGABwqgTVjGtGdOW0t/Oyt+TKoVJUKkKtPRwd4+W3y+ytNvvZn6h+z58KNS1WHV7nw3cLJHHYxTQQ6reQ2t6tnj7L9rt0lEV0Y9qhTMrnCqCSAAN/b1PaOrfVycv+3n9pLZPzSurJrVIx9lD2KoW91R5PPl191vdx1ejdtX3d+z13w7ovia0t7DXLH7RBa3trqMS72TbcW0yTQvlSCdskaNg8HGCCMis4ScJKpHdX/8AJouL++Mmvn3NHqnHo/8AO/5o4vVv2e/hLr3ix/Gep+GriXU21a21zA1a9S1Go24jEV2LZZRAJgIkUuEyygqxIZgVS/c2dPS17eXNfmt6ttvz13HVk6qtPtb1S2v3t0v002NGz+DXw1so2hg8LW5hk0/UNKeKWaWVHtL64+0XcTK7EMJJfmORkdAQOKjlSpuj9lxhH/t2mnGCvv7qk1fd3u22kP2kudVL6pyl85NNv52XkuhmTfs+/DK503TdKktfEGNIE0Vndr4p1Rb6KCUKJLf7WLgTmBgifuS5j+VTtyAaur++lzT1bVn5q7fvfzat73fTYypxVFctPRXuvJ2S93+XRbKy67l2X4G/CuW2ns/+ERiSKaDTLZfLuZ42t4tPbdZJbsrg24ibLKIinzMzHJYk1zOU1U+0pc9/71rfdbS3w2bVrN3fKuXl6crh/wButtv5tu/N8V0nf3Y209H+G/hTQfF+q+N9Gtb611PXCH1BU1O6+yTy7I0842hk+ziUrDGpkEYchevJzMP3cPZx2u36Xbbt2u227bt3Km3Vact0rfdtfvbpe/4Izrv4LfDm/wDGX/CdXmjXb6mb6HU3j/tS7WykvYY1jiuXsxILd5kRECyNGWGxSDlQQUf3D5qem/y5k1K19rptO1r3fd3JSc9H2S9UndJ97Pa/ZdjNT9nP4PC6vZn8JSSw30V9C1hNqd3JYQLeqy3Rt7RpTBbtKruGaJEbDsMjccxGEYUvYx2ty7u6immop7pJxjZJpLljbZW0lWnKp7VvW9/V2tdrZuzd73vd33ZJpX7Pvwp0aSea30HUJ57qTTZZ577XL+7mlbT7jz7Ms80zMfKk5UZxgBTlQFrRScZc6et+b1k04tvu2na/p2VsHCLjydLctuiTadl2V108+7ve8Y/BP4bePdaOveJtCuJ7qS3itLoQaldWsV/bxuXSG7hhkWO6jVmYhJldfmYYwSDNNeyqe1ho7qX/AG9H4Zeq0s99F2RpKTlHlb6Nednur72fb/M0Ifhj4Ghtra0j0QCKz16bxNAPtM3yanLJJI82d+Tl5pDsPyDdgKAAA4vkcOX7CaXkmmn+Env302Qpe8pp7T5b+fK4uP3OEdt7a7u+vqfhzRtZ1HRtU1Gz8670G6kvbCTzGXyJngkgZsAgNmKaVcMCPmzjIBDhNwcnHquV+jcZW++MX8vUGtLed/z/AMzlNO+Bnwx0rxMfFtl4emW9Fxc3cMT6ldPZ21xcAieeC0aQ28Erhn3SRxqx3vz8zZxVKEafsktLOPpF7pdUvJW002HKTlLne90/VrZvu/X13Ot8N+G9G8IeHdM8KeHbP7LpWj2kNhZW/mPJ5UESBETc5LNhVAyxJPcmt5zlUk5y3ZEYqCsjk3+CHw3k1vUddbR73ztW1G21e7t11e9Wze+gmhmjuRaiUQLL5lvCzOqAttIbIZgypydKKjHZNtdbX5r27J88m1td33StU/3jk5faST80kkr+iSS8lYsa/wDBz4d+JX1GfVdEm+1anqcGsz3lrqFza3Md9DAtvHPDNFIskDiFFjzEy5UsDnc2ZiuRJR0s2/8AwLR/J9thTSn8Svol9zbXzTb13Nrwl4Q8PeBtEi8PeGrF7WyiklnIkuJJ5ZZZXaSSWSWVmkkkd2Zmd2LEkkmrbc0l0SsvJf1+Ou5MYpNvq9X/AF/VlotDnNK+CHw10XUF1LT9FvFMWrvrtvbyaveS2ttfOLgSSw27ymKEN9ruNyIgVi+SCVXERShCMEtIpxXX3WuW2vS2iWy6Gk5OrJylu7X6appp6dbpO+767u9Cw/Zx+DunQT2sHhe6a2mhFsltNrF7LDaQfaEuPJtY3mK2sRliiYpCEU+WgIwoAqMnBxa3i4tPd3g7x1ers+j073M3GLUlbRqSa2VppqWm12m1fdX0aLuo/Av4X6kdU83w7LbPrGrpr88ljqV1aSR6kqbPtcDQyKbeZlyHeEoZAzb92TlKTUYwT0je3kpbq/Z78u122ldlz/eScp63UVr/AHfh+a772SV7JBc/Av4a3Xh7S/DP9j6hb22iX0upWNza61e299HdzCQTTG8jmW4d5POl3lpCX3ndnii9pxmtHFcqtoraO1trNpNrq1d6ij7kZR35nd3116PXqtk1stFpoS6J8E/hz4e8VL4y0rRbtNSSe7uoFl1W7mtbWe6JNxLBayStBBJIWbc8aKx3vz8zZKTdGLhDRWt8rp8q7Ruk7LTRaaIJNz38n6tKyb7u19Xrq3ud/TGFABQAUAeL/szf81W/7Kdrv/tGvmuGv+Yz/r/U/Q/S/En/AJlH/YDh/wD289or6U/NAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP+QFqX/XnN/6AaAL9ABQAUAFABQAUAFABQAUAFABQAUAFAH//0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDwj9of/j8+H3/ZWtA/9JzXzXEv/MH/ANf6f6n6X4bf8zf/ALAcR/7Ye719KfmgUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB4v+zN/wA1W/7Kdrv/ALRr5rhr/mM/6/1P0P0vxJ/5lH/YDh//AG89or6U/NAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDyL40/D7xn8QLLTf8AhA7nRYdW8N+M7DxBF/a7yrbP9nteFbylZjlnTIGON3IOK8PPcvxOPpUvqjip06kZ+9e3u37Jvdr/ADPuOBM/y3IMTiv7WjUdKvQnRfs1FyXO43a5mlsnrrrbRoqf8Zmf9UX/APKrXN/xkn/Tj/yoen/xrb/qO/8ALcP+MzP+qL/+VWj/AIyT/px/5UD/AI1t/wBR3/luH/GZn/VF/wDyq0f8ZJ/04/8AKgf8a2/6jv8Ay3D/AIzM/wCqL/8AlVo/4yT/AKcf+VA/41t/1Hf+W4f8Zmf9UX/8qtH/ABkn/Tj/AMqB/wAa2/6jv/LcP+MzP+qL/wDlVo/4yT/px/5UD/jW3/Ud/wCW4f8AGZn/AFRf/wAqtH/GSf8ATj/yoH/Gtv8AqO/8tw/4zM/6ov8A+VWj/jJP+nH/AJUD/jW3/Ud/5bh/xmZ/1Rf/AMqtH/GSf9OP/Kgf8a2/6jv/AC3D/jMz/qi//lVo/wCMk/6cf+VA/wCNbf8AUd/5bh/xmZ/1Rf8A8qtH/GSf9OP/ACoH/Gtv+o7/AMtw/wCMzP8Aqi//AJVaP+Mk/wCnH/lQP+Nbf9R3/luH/GZn/VF//KrR/wAZJ/04/wDKgf8AGtv+o7/y3D/jMz/qi/8A5VaP+Mk/6cf+VA/41t/1Hf8AluH/ABmZ/wBUX/8AKrR/xkn/AE4/8qB/xrb/AKjv/LcP+MzP+qL/APlVo/4yT/px/wCVA/41t/1Hf+W4f8Zmf9UX/wDKrR/xkn/Tj/yoH/Gtv+o7/wAtw/4zM/6ov/5VaP8AjJP+nH/lQP8AjW3/AFHf+W4f8Zmf9UX/APKrR/xkn/Tj/wAqB/xrb/qO/wDLcP8AjMz/AKov/wCVWj/jJP8Apx/5UD/jW3/Ud/5bh/xmZ/1Rf/yq0f8AGSf9OP8AyoH/ABrb/qO/8tw/4zM/6ov/AOVWj/jJP+nH/lQP+Nbf9R3/AJbh/wAZmf8AVF//ACq0f8ZJ/wBOP/Kgf8a2/wCo7/y3D/jMz/qi/wD5VaP+Mk/6cf8AlQP+Nbf9R3/luH/GZn/VF/8Ayq0f8ZJ/04/8qB/xrb/qO/8ALcP+MzP+qL/+VWj/AIyT/px/5UD/AI1t/wBR3/luH/GZn/VF/wDyq0f8ZJ/04/8AKgf8a2/6jv8Ay3D/AIzM/wCqL/8AlVo/4yT/AKcf+VA/41t/1Hf+W4f8Zmf9UX/8qtH/ABkn/Tj/AMqB/wAa2/6jv/LcP+MzP+qL/wDlVo/4yT/px/5UD/jW3/Ud/wCW4f8AGZn/AFRf/wAqtH/GSf8ATj/yoH/Gtv8AqO/8tw/4zM/6ov8A+VWj/jJP+nH/AJUD/jW3/Ud/5bh/xmZ/1Rf/AMqtH/GSf9OP/Kgf8a2/6jv/AC3D/jMz/qi//lVo/wCMk/6cf+VA/wCNbf8AUd/5bh/xmZ/1Rf8A8qtH/GSf9OP/ACoH/Gtv+o7/AMtw/wCMzP8Aqi//AJVaP+Mk/wCnH/lQP+Nbf9R3/luH/GZn/VF//KrR/wAZJ/04/wDKgf8AGtv+o7/y3D/jMz/qi/8A5VaP+Mk/6cf+VA/41t/1Hf8AluH/ABmZ/wBUX/8AKrR/xkn/AE4/8qB/xrb/AKjv/LcP+MzP+qL/APlVo/4yT/px/wCVA/41t/1Hf+W5tfAT4feM/h/o3if/AITy50WbVvEnie98Qyf2Q8rW6faEiyo81VYYdHwDnjbyTmunIsvxOApVfrbi51Kkp+7e3vW7pPdP/M8zjvP8tz/E4X+yY1FSoUIUV7RRUnyOVm+VtbNa6a30SPTq9w+HCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/5AWpf9ec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCh4g/wCQFqX/AF5zf+gGgC/QAUAFABQAUAFABQAUAFABQAUAFABQB//W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAM/Tv+P3VP8Ar8X/ANJ4qANCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA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IF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc5IDY5Ny4wMDUgNTM5Ljk5OSA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgxOCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgMjM0Ljg3IG51bGxdCj4+CmVuZG9iago4MjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjg1LjAwNSA0MjUuOTc2IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY4NS4wMDUgNTM5Ljk5OCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago4MjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgMTczLjI5NCBudWxsXQo+PgplbmRvYmoKODI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY3My4wMDUgNDY3LjI0MiA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago4MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NzMuMDA1IDUzOS45OTggNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKODI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDExMS43MTggbnVsbF0KPj4KZW5kb2JqCjgyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2NjEuMDA1IDQ5My4wMzIgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKODMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgNjYxLjAwNSA1MzkuOTk3IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTMgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKODMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgNDY3LjIzMiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago4MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NDkuMDA1IDUzOS45OTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDY0Ni45MjggbnVsbF0KPj4KZW5kb2JqCjgzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDQ4My42ODMgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTMgMCBSIC9YWVogNzIuMCA1ODUuODU2IG51bGxdCj4+CmVuZG9iago4MzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSAzNDAuNzI1IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYyNS4wMDUgNTM5Ljk5OCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzNyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzUzIDAgUiAvWFlaIDcyLjAgNTAwLjc4NCBudWxsXQo+PgplbmRvYmoKODQxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgNDI5Ljg4OSA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MTMuMDA1IDUzOS45OTggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDQwMy43MTIgbnVsbF0KPj4KZW5kb2JqCjg0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MDEuMDA1IDMzNy44MTcgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjAxLjAwNSA1MzkuOTk4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg0NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTMgMCBSIC9YWVogNzIuMCAzMzAuNjQgbnVsbF0KPj4KZW5kb2JqCjg0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1ODkuMDA1IDMzNy44MTcgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTg5LjAwNSA1MzkuOTk4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTMgMCBSIC9YWVogNzIuMCAyNTcuNTY4IG51bGxdCj4+CmVuZG9iago4NTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSAzMzcuODE3IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU3Ny4wMDUgNTM5Ljk5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0OSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzUzIDAgUiAvWFlaIDcyLjAgMTg0LjQ5NiBudWxsXQo+PgplbmRvYmoKODUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgMzM3LjgxNyA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1MiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NjUuMDA1IDUzOS45OTggNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKODU1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDExMS40MjQgbnVsbF0KPj4KZW5kb2JqCjg1NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NTMuMDA1IDM3NS42MjggNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKODU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTUzLjAwNSA1MzkuOTk4IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKODU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU0MS4wMDUgMzY1LjI5MiA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NDEuMDA1IDUzOS45OTggNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NTggMCBSCi9IIC9JCgo+PgplbmRvYmoKODYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDY0NC40MDEgbnVsbF0KPj4KZW5kb2JqCjg2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDM5NC4zMzkgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTI5LjAwNSA1MzkuOTk4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCA1ODAuODAyIG51bGxdCj4+CmVuZG9iago4NjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTE3LjAwNSAzODUuOTY0IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUxNy4wMDUgNTM5Ljk5OCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU2IDAgUiAvWFlaIDcyLjAgNTE3LjIwMyBudWxsXQo+PgplbmRvYmoKODY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgNDEyLjE0NCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1MDUuMDA1IDUzOS45OTggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODcwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDQ1My42MDQgbnVsbF0KPj4KZW5kb2JqCjg3MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0OTMuMDA1IDM4NS45NTUgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCAzOTAuMDA1IG51bGxdCj4+CmVuZG9iago4NzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDgxLjAwNSA0MDguMzMxIDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDQ4MS4wMDUgNTQwLjIwOCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU2IDAgUiAvWFlaIDcyLjAgMzI2LjQwNiBudWxsXQo+PgplbmRvYmoKODc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDAxLjI2MSA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCA0NjkuMDA1IDU0MC4xNjggNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODc5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDI2Mi44MDcgbnVsbF0KPj4KZW5kb2JqCjg4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQxNS43ODkgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKODgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCAxOTkuMjA4IG51bGxdCj4+CmVuZG9iago4ODMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0MDAuODgyIDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ0NS4wMDUgNTM5Ljk5OCA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4MiAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU2IDAgUiAvWFlaIDcyLjAgMTM1LjYwOSBudWxsXQo+PgplbmRvYmoKODg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgMzk1LjM4NSA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MzMuMDA1IDUzOS45OTggNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKODg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago4ODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDIxLjAwNSA0MjcuMjEgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODggMCBSCi9IIC9JCgo+PgplbmRvYmoKODkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODcgNDIxLjAwNSA1NDAuMjA3IDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTkgMCBSIC9YWVogNzIuMCA2NjMuMjE0IG51bGxdCj4+CmVuZG9iago4OTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSA0MTkuNzYyIDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQwOS4wMDUgNTM5Ljk5OCA0MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5MSAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU5IDAgUiAvWFlaIDcyLjAgNjAwLjE5MiBudWxsXQo+PgplbmRvYmoKODk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM5Ny4wMDUgNDE0LjI2NSA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzOTcuMDA1IDUzOS45OTggNDA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDUzNy4xNyBudWxsXQo+PgplbmRvYmoKODk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgNDA4LjMxMSAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAzODUuMDA1IDU0MC4yMDggMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTAwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDQ3NC4xNDggbnVsbF0KPj4KZW5kb2JqCjkwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDM4Ni4yMTMgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzczLjAwNSA1MzkuOTk4IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTkgMCBSIC9YWVogNzIuMCA0MTEuMTI2IG51bGxdCj4+CmVuZG9iago5MDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzYxLjAwNSA0MDAuODYyIDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM2MS4wMDUgNTM5Ljk5OCAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwMyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU5IDAgUiAvWFlaIDcyLjAgMzQ4LjEwNCBudWxsXQo+PgplbmRvYmoKOTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM0OS4wMDUgMzk1LjM2NSAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwNiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNDkuMDA1IDUzOS45OTggMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTA5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDI4NS4wODIgbnVsbF0KPj4KZW5kb2JqCjkxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzcuMDA1IDQ3Mi4zOTIgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42NTggMzM3LjAwNSA1NDAuMzc4IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTkgMCBSIC9YWVogNzIuMCAyMTAuMDYgbnVsbF0KPj4KZW5kb2JqCjkxMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMjUuMDA1IDQzNy44MjcgMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTE0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzI1LjAwNSA1NDAuMjA4IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTEyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTkgMCBSIC9YWVogNzIuMCAxNDcuMDM4IG51bGxdCj4+CmVuZG9iago5MTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSAzODAuMTY5IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTE1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkxNSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjkxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDQzMy4xNDYgMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MTggMCBSCi9IIC9JCgo+PgplbmRvYmoKOTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzAxLjAwNSA1MzkuOTk4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCA2NjQuMzQ2IG51bGxdCj4+CmVuZG9iago5MjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjg5LjAwNSAzNTcuNTQ0IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI4OS4wMDUgNTM5Ljk5OCAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyMSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgNjAyLjc5NSBudWxsXQo+PgplbmRvYmoKOTI1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3Ny4wMDUgMzk4LjI3MyAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyNCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAyNzcuMDA1IDU0MC4yMDggMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTI3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2MiAwIFIgL1hZWiA3Mi4wIDU0MS4yNDQgbnVsbF0KPj4KZW5kb2JqCjkyOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDM4MC40MzggMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjY1LjAwNSA1MzkuOTk4IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTI3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCA0NzkuNjkzIG51bGxdCj4+CmVuZG9iago5MzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjUzLjAwNSAzNzcuMDgyIDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI1My4wMDUgNTM5Ljk5OCAyNjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzMCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgNDE4LjE0MiBudWxsXQo+PgplbmRvYmoKOTM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDUgMzkxLjczIDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI0MS4wMDUgNTM5Ljk5OCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzMyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgMzU2LjU5MSBudWxsXQo+PgplbmRvYmoKOTM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDUgMzg2LjIzMyAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzNiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMjkuMDA1IDUzOS45OTggMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTM5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2MiAwIFIgL1hZWiA3Mi4wIDI5NS4wNCBudWxsXQo+PgplbmRvYmoKOTQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgNDgzLjU0MyAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzOSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4NyAyMTcuMDA1IDU0MC4yMDcgMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2MiAwIFIgL1hZWiA3Mi4wIDIzMy40ODkgbnVsbF0KPj4KZW5kb2JqCjk0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMDUuMDA1IDQ3Ni4wOTUgMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjA1LjAwNSA1MzkuOTk4IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTQyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk0NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCAxNzEuOTM4IG51bGxdCj4+CmVuZG9iago5NDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTkzLjAwNSAyMDcuNDM5IDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDE5My4wMDUgNTM5Ljk5OCAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk0NSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NDggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzY1IDAgUiAvWFlaIDcyLjAgNDkxLjkgbnVsbF0KPj4KZW5kb2JqCjk0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxODEuMDA1IDIzNi40MzQgMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NDggMCBSCi9IIC9JCgo+PgplbmRvYmoKOTUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTgxLjAwNSA1MzkuOTk4IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTQ4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NzUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKOTUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMTY5LjAwNSAxMjUuMjc2IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDE2OS4wMDUgNTM5Ljk5OCAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1MSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzc1IDAgUiAvWFlaIDcyLjAgMzI2LjAgbnVsbF0KPj4KZW5kb2JqCjk1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNTcuMDA1IDI0Ny45NjUgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTU3LjAwNSA1MzkuOTk4IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTU0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NzggMCBSIC9YWVogNzIuMCA2NTUuMiBudWxsXQo+PgplbmRvYmoKOTU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE0NS4wMDUgMjM3LjM5MyAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5NTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyAxNDUuMDA1IDUzOS45OTcgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTYwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc3OCAwIFIgL1hZWiA3Mi4wIDM3Ni44IG51bGxdCj4+CmVuZG9iago5NjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTMzLjAwNSA0OTMuMDggMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjcgMTMzLjAwNSA1NDAuMzQ3IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTYwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3ODUgMCBSIC9YWVogNzIuMCAxNTEuMjY1IG51bGxdCj4+CmVuZG9iago5NjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTIxLjAwNSA0NzUuNjUxIDEzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDEyMS4wMDUgNTQwLjM0OCAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2MyAwIFIKL0ggL0kKCj4+CmVuZG9iago5NjYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzkwIDAgUiAvWFlaIDcyLjAgMzA0Ljk5NSBudWxsXQo+PgplbmRvYmoKOTY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEwOS4wMDUgMzY4Ljc0MyAxMTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxMDkuMDA1IDUzOS45OTggMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTY5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc5NiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago5NzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA5Ny4wMDUgMTMyLjkwOCAxMDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA5Ny4wMDUgNTM5Ljk5OCAxMDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbODE3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjk3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDg1LjAwNSAxMTkuMDYgOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk3MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA4NS4wMDUgNTM5Ljk5OCA5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MTcgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKOTc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDczLjAwNSAxNzEuOTIgODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAg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Ugo4NjAgMCBSCjg2MiAwIFIKODYzIDAgUgo4NjUgMCBSCjg2NiAwIFIKODY4IDAgUgo4NjkgMCBSCjg3MSAwIFIKODcyIDAgUgo4NzQgMCBSCjg3NSAwIFIKODc3IDAgUgo4NzggMCBSCjg4MCAwIFIKODgxIDAgUgo4ODMgMCBSCjg4NCAwIFIKODg2IDAgUgo4ODcgMCBSCjg4OSAwIFIKODkwIDAgUgo4OTIgMCBSCjg5MyAwIFIKODk1IDAgUgo4OTYgMCBSCjg5OCAwIFIKODk5IDAgUgo5MDEgMCBSCjkwMiAwIFIKOTA0IDAgUgo5MDUgMCBSCjkwNyAwIFIKOTA4IDAgUgo5MTAgMCBSCjkxMSAwIFIKOTEzIDAgUgo5MTQgMCBSCjkxNiAwIFIKOTE3IDAgUgo5MTkgMCBSCjkyMCAwIFIKOTIyIDAgUgo5MjMgMCBSCjkyNSAwIFIKOTI2IDAgUgo5MjggMCBSCjkyOSAwIFIKOTMxIDAgUgo5MzIgMCBSCjkzNCAwIFIKOTM1IDAgUgo5MzcgMCBSCjkzOCAwIFIKOTQwIDAgUgo5NDEgMCBSCjk0MyAwIFIKOTQ0IDAgUgo5NDYgMCBSCjk0NyAwIFIKOTQ5IDAgUgo5NTAgMCBSCjk1MiAwIFIKOTUzIDAgUgo5NTUgMCBSCjk1NiAwIFIKOTU4IDAgUgo5NTkgMCBSCjk2MSAwIFIKOTYyIDAgUgo5NjQgMCBSCjk2NSAwIFIKOTY3IDAgUgo5NjggMCBSCjk3MCAwIFIKOTcxIDAgUgo5NzMgMCBSCjk3NCAwIFIKOTc2IDAgUgo5NzcgMCBSCl0KZW5kb2JqCjk4MSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgOTgwIDAgUgogIC9Db250ZW50cyA5NzggMCBSCj4+CmVuZG9iago5ODIgMCBvYmoKPDwgL0xlbmd0aCA5ODMgMCBSIC9GaWx0ZXIgL0ZsYXRl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IDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDEwMjYgMCBSCj4+CmVuZG9iagoxMDI5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzgxNyAwIFIgL1hZWiA3Mi4wIDYyNC40IG51bGxdCj4+CmVuZG9iagoxMDMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDcwOS4wMDUgMTY3LjgzMyA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDcwOS4wMDUgNTM5Ljk5OCA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs5ODQgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTAzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY5Ny4wMDUgMTUwLjMzMyA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDY5Ny4wMDUgNTQwLjE2OCA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY4NS4wMDUgMzMxLjI0OSA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY4NS4wMDUgNTM5Ljk5OCA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs5OTYgMCBSIC9YWVogNzIuMCA2ODEuNiBudWxsXQo+PgplbmRvYmoKMTAzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NzMuMDA1IDI1MS4xMzkgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NzMuMDA1IDUzOS45OTggNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NjEuMDA1IDI4MC40NTggNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NjEuMDA1IDUzOS45OTggNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMTAwNyAwIFIgL1hZWiA3Mi4wIDYzNi4yNSBudWxsXQo+PgplbmRvYmoKMTA0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NDkuMDA1IDE4NC43NjggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NDkuMDA1IDUzOS45OTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMTAwNyAwIFIgL1hZWiA3Mi4wIDE1MC45NCBudWxsXQo+PgplbmRvYmoKMTA0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzcuMDA1IDIxMC41NjYgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MzcuMDA1IDUzOS45OTggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNDggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMTAxOSAwIFIgL1hZWiA3Mi4wIDMyOC4wNjUgbnVsbF0KPj4KZW5kb2JqCjEwNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjI1LjAwNSAxODQuNzU4IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0OCAwIFIK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USgxUCJLqiRTIqlEcotiJyFVRIBZAgXrZZGwgyALwU/gqutX4sH///hD/2kE/oV/8ej/AvC8n2wKZW5kc3RyZWFtCmVuZG9iagoxMDY0IDAgb2JqCjE1MzM5CmVuZG9iagoxMDYzIDAgb2JqCjw8IC9MZW5ndGggMTA2NSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicmyTx/w////9vgPiPAgA7wAjICmVuZHN0cmVhbQplbmRvYmoKMTA2NSAwIG9iagoyMAplbmRvYmoKMTA2NiAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUwCiAgL0Jhc2VGb250IC9FQUFBQUErRGVqYVZ1U2Fucy1Cb2xkCiAgL0VuY29kaW5nIC9JZGVudGl0eS1ICiAgL1RvVW5pY29kZSAxMDY3IDAgUgogIC9EZXNjZW5kYW50Rm9udHMgWzEwNjggMCBSXQo+PgplbmRvYmoKMTA2OCAwIG9iago8PCAvVHlwZSAvRm9udAovQmFzZUZvbnQgL0VBQUFBQStEZWphVnVTYW5zLUJvbGQgCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkgCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDEwNjEgMCBSCi9EVyAwCi9XIFsgMCBbNjAwIDM0OCA0MTUgODMwIDY4NyA1OTIgNzExIDEwNDEgNjc4IDcxMSA0NzggNjc0IDM0MiA2ODMgNzczIDg1MCA2ODIgNzExIDM2NSA2NjUgOTIzIDM0MiA3MTUgNzE1IDcxNSA1OTUgMzc5IDc3MyA0OTMgNjk1IDY5NSA2OTUgNjk1IDY4MyA3NjIgMzk5IDY5NSA2OTUgNDM1IDczMyA2MzcgNzMyIDcxNSAzNDggNjQ1IDExMDMgNzI0IDcyMCAzNzIgODIwIDY5NSA2OTUgODM2IDY1MSA3NzQgNjUxIDY5NSA4NTAgMzQyIDY5NSA3NzAgNDU3IDQ1NyA4MTIgNzE1IDgzNiA5OTUgODM3IDcyNSA1ODIgMzcyIF0gXQo+PgplbmRv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YmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxNSAwIFIKICAvTGFuZyAoZW4pCiAgL01ldGFkYXRhIDUgMCBSCiAgL1BhZ2VMYWJlbHMgMTA4OSAwIFIKPj4KZW5kb2JqCjE0IDAgb2JqCjw8CiAgL0ZvbnQgPDwKICAvRjE2IDEwNjYgMCBSCiAgL0YxNSAxMDc1IDAgUgogIC9GMTkgMTA4NCAwIFIKPj4KICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwKICAvSW0xIDcgMCBSCiAgL0ltMiA5IDAgUgogIC9JbTMgMTYgMCBSCiAgL0ltNCAxOCAwIFIKICAvSW01IDc3OSAwIFIKICAvSW02IDc4MSAwIFIKICAvSW03IDc4NiAwIFIKPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTA4OSAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+PiAxIDw8IC9TIC9yIC9TdCAyID4+IDIgPDwgL1MgL3IgL1N0IDMgPj4gMyA8PCAvUyAvciAvU3QgNCA+PiA0IDw8IC9TIC9yIC9TdCA1ID4+IDUgPDwgL1MgL3IgL1N0IDYgPj4gNiA8PCAvUyAvciAvU3QgNyA+PiA3IDw8IC9TIC9yIC9TdCA4ID4+IDggPDwgL1MgL3IgL1N0IDkgPj4gOSA8PCAvUyAvRCA+PiAxMSA8PCAvUyAvRCAvU3QgMyA+PiAxMiA8PCAvUyAvRCAvU3QgNCA+PiAxNyA8PCAvUyAvRCAvU3QgOSA+PiAyMiA8PCAvUyAvRCAvU3QgMTQgPj4gMjcgPDwgL1MgL0QgL1N0IDE5ID4+IDMyIDw8IC9TIC9EIC9TdCAyNCA+PiAzNyA8PCAvUyAvRCAvU3QgMjkgPj4gNTAgPDwgL1MgL0QgL1N0IDQyID4+IDU2IDw8IC9TIC9EIC9TdCA0OCA+PiA2MCA8PCAvUyAvRCAvU3QgNTIgPj5dID4+CmVuZG9iagp4cmVmCjAgMTA5MAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDEzOSAwMDAwMCBuIAowMDAwMDAyNjc3IDAwMDAwIG4gCjAwMDAwMDI2OTcgMDAwMDAgbiAKMDAwMDAwMjczMCAwMDAwMCBuIAowMDAwMDAzNjYyIDAwMDAwIG4gCjAwMDAwMDM2ODEgMDAwMDAgbiAKMDAwMDA1MjIwNiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAxMDU0ODcgMDAwMDAgbiAKMDAwMDEwNTUwOSAwMDAwMCBuIAowMDAwMTA2MDE3IDAwMDAwIG4gCjAwMDAxMDYwMzcgMDAwMDAgbiAKMDAwMDc4ODQ5MiAwMDAwMCBuIAowMDAwNzg3ODM5IDAwMDAwIG4gCjAwMDAxMDYyMzEgMDAwMDAgbiAKMDAwMDExMjQwMiAwMDAwMCBuIAowMDAwMTEyNDIzIDAwMDAwIG4gCjAwMDAxMTk2MDMgMDAwMDAgbiAKMDAwMDExOTYyNCAwMDAwMCBuIAowMDAwMTE5NzA5IDAwMDAwIG4gCjAwMDAxMTk4NDcgMDAwMDAgbiAKMDAwMDEyMDg5MSAwMDAwMCBuIAowMDAwMTIwOTExIDAwMDAwIG4gCjAwMDAxMjA5MzggMDAwMDAgbiAKMDAwMDEyMTE0OSAwMDAwMCBuIAowMDAwMTIzODU5IDAwMDAwIG4gCjAwMDAxMjM4ODAgMDAwMDAgbiAKMDAwMDEyNDA3NCAwMDAwMCBuIAowMDAwMTI0MTc5IDAwMDAwIG4gCjAwMDAxMjQzMTYgMDAwMDAgbiAKMDAwMDEyNDQyMiAwMDAwMCBuIAowMDAwMTI0NTU5IDAwMDAwIG4gCjAwMDAxMjQ2NzQgMDAwMDAgbiAKMDAwMDEyNDgxMCAwMDAwMCBuIAowMDAwMTI0OTM4IDAwMDAwIG4gCjAwMDAxMjUwNzQgMDAwMDAgbiAKMDAwMDEyNTIxMCAwMDAwMCBuIAowMDAwMTI1MzM5IDAwMDAwIG4gCjAwMDAxMjU0NzUgMDAwMDAgbiAKMDAwMDEyNTYxMSAwMDAwMCBuIAowMDAwMTI4MTEzIDAwMDAwIG4gCjAwMDAxMjgxMzQgMDAwMDAgbiAKMDAwMDEyODIwMyAwMDAwMCBuIAowMDAwMTI4NDE0IDAwMDAwIG4gCjAwMDAxMjkyNjQgMDAwMDAgbiAKMDAwMDEyOTI4NCAwMDAwMCBuIAowMDAwMTI5NDc4IDAwMDAwIG4gCjAwMDAxMjk1NzMgMDAwMDAgbiAKMDAwMDEyOTcwOSAwMDAwMCBuIAowMDAwMTMxMTAxIDAwMDAwIG4gCjAwMDAxMzExMjIgMDAwMDAgbiAKMDAwMDEzMTE0OSAwMDAwMCBuIAowMDAwMTMxMzYwIDAwMDAwIG4gCjAwMDAxMzMwMzggMDAwMDAgbiAKMDAwMDEzMzA1OSAwMDAwMCBuIAowMDAwMTMzMjUzIDAwMDAwIG4gCjAwMDAxMzQ5NzQgMDAwMDAgbiAKMDAwMDEzNDk5NSAwMDAwMCBuIAowMDAwMTM1MTg5IDAwMDAwIG4gCjAwMDAxMzY2NjkgMDAwMDAgbiAKMDAwMDEzNjY5MCAwMDAwMCBuIAowMDAwMTM2ODg0IDAwMDAwIG4gCjAwMDAxMzY5NjIgMDAwMDAgbiAKMDAwMDEzNzA5OCAwMDAwMCBuIAowMDAwMTM3MjM1IDAwMDAwIG4gCjAwMDAxMzczMTMgMDAwMDAgbiAKMDAwMDEzNzQ1MCAwMDAwMCBuIAowMDAwMTM3NTkwIDAwMDAwIG4gCjAwMDAxMzc2NjggMDAwMDAgbiAKMDAwMDEzNzgwNiAwMDAwMCBuIAowMDAwMTM3OTQ2IDAwMDAwIG4gCjAwMDAxMzgwMjYgMDAwMDAgbiAKMDAwMDEzODE2NCAwMDAwMCBuIAowMDAwMTM4MzA0IDAwMDAwIG4gCjAwMDAxMzgzODQgMDAwMDAgbiAKMDAwMDEzODUyMiAwMDAwMCBuIAowMDAwMTM4NjYyIDAwMDAwIG4gCjAwMDAxMzg3NDIgMDAwMDAgbiAKMDAwMDEzODg4MCAwMDAwMCBuIAowMDAwMTM5MDIwIDAwMDAwIG4gCjAwMDAxMzkxMDAgMDAwMDAgbiAKMDAwMDEzOTIzOCAwMDAwMCBuIAowMDAwMTM5Mzc4IDAwMDAwIG4gCjAwMDAxMzk0NTggMDAwMDAgbiAKMDAwMDEzOTU5NiAwMDAwMCBuIAowMDAwMTM5NzM2IDAwMDAwIG4gCjAwMDAxMzk4MTYgMDAwMDAgbiAKMDAwMDEzOTk1NCAwMDAwMCBuIAowMDAwMTQwMDk0IDAwMDAwIG4gCjAwMDAxNDAxNzQgMDAwMDAgbiAKMDAwMDE0MDMxMiAwMDAwMCBuIAowMDAwMTQwNDUyIDAwMDAwIG4gCjAwMDAxNDA1MzIgMDAwMDAgbiAKMDAwMDE0MDY3MCAwMDAwMCBuIAowMDAwMTQwODEwIDAwMDAwIG4gCjAwMDAxNDA4OTAgMDAwMDAgbiAKMDAwMDE0MTAyNyAwMDAwMCBuIAowMDAwMTQxMTY3IDAwMDAwIG4gCjAwMDAxNDEyNDYgMDAwMDAgbiAKMDAwMDE0MTM4MyAwMDAwMCBuIAowMDAwMTQxNTI0IDAwMDAwIG4gCjAwMDAxNDE2MDMgMDAwMDAgbiAKMDAwMDE0MTc0MyAwMDAwMCBuIAowMDAwMTQxODg1IDAwMDAwIG4gCjAwMDAxNDE5NjYgMDAwMDAgbiAKMDAwMDE0MjEwNSAwMDAwMCBuIAowMDAwMTQyMjQ3IDAwMDAwIG4gCjAwMDAxNDIzMjggMDAwMDAgbiAKMDAwMDE0MjQ2OCAwMDAwMCBuIAowMDAwMTQyNjEwIDAwMDAwIG4gCjAwMDAxNDI2OTEgMDAwMDAgbiAKMDAwMDE0MjgzMSAwMDAwMCBuIAowMDAwMTQyOTczIDAwMDAwIG4gCjAwMDAxNDMwNTQgMDAwMDAgbiAKMDAwMDE0MzE5NCAwMDAwMCBuIAowMDAwMTQzMzM2IDAwMDAwIG4gCjAwMDAxNDM0MTcgMDAwMDAgbiAKMDAwMDE0MzU1NiAwMDAwMCBuIAowMDAwMTQzNjk4IDAwMDAwIG4gCjAwMDA3MTI1MDIgMDAwMDAgbiAKMDAwMDE0MzgzOCAwMDAwMCBuIAowMDAwMTQzOTgwIDAwMDAwIG4gCjAwMDAxNDQwNTkgMDAwMDAgbiAKMDAwMDE0NDE5OCAwMDAwMCBuIAowMDAwMTQ0MzQwIDAwMDAwIG4gCjAwMDAxNDQ0MTkgMDAwMDAgbiAKMDAwMDE0NDU1OSAwMDAwMCBuIAowMDAwMTQ0NzAxIDAwMDAwIG4gCjAwMDAxNDQ3ODAgMDAwMDAgbiAKMDAwMDE0NDkyMCAwMDAwMCBuIAowMDAwMTQ1MDYyIDAwMDAwIG4gCjAwMDAxNDUxNDEgMDAwMDAgbiAKMDAwMDE0NTI4MSAwMDAwMCBuIAowMDAwMTQ1NDIzIDAwMDAwIG4gCjAwMDAxNDU1MDIgMDAwMDAgbiAKMDAwMDE0NTY0MiAwMDAwMCBuIAowMDAwMTQ1Nzg0IDAwMDAwIG4gCjAwMDAxNDU4NjMgMDAwMDAgbiAKMDAwMDE0NjAwMSAwMDAwMCBuIAowMDAwMTQ2MTQzIDAwMDAwIG4gCjAwMDAxNDYyMjIgMDAwMDAgbiAKMDAwMDE0NjM2MiAwMDAwMCBuIAowMDAwMTQ2NTA0IDAwMDAwIG4gCjAwMDAxNDY1ODMgMDAwMDAgbiAKMDAwMDE0NjcyMyAwMDAwMCBuIAowMDAwMTQ2ODY1IDAwMDAwIG4gCjAwMDAxNDY5NDQgMDAwMDAgbiAKMDAwMDE0NzA4MyAwMDAwMCBuIAowMDAwMTQ3MjI1IDAwMDAwIG4gCjAwMDAxNDczMDQgMDAwMDAgbiAKMDAwMDE0NzQ0NCAwMDAwMCBuIAowMDAwMTQ3NTg2IDAwMDAwIG4gCjAwMDAxNDc2NjcgMDAwMDAgbiAKMDAwMDE0NzgwNyAwMDAwMCBuIAowMDAwMTQ3OTQ5IDAwMDAwIG4gCjAwMDAxNDgwMzAgMDAwMDAgbiAKMDAwMDE0ODE3MCAwMDAwMCBuIAowMDAwMTQ4MzEyIDAwMDAwIG4gCjAwMDAxNDgzOTMgMDAwMDAgbiAKMDAwMDE0ODUzMyAwMDAwMCBuIAowMDAwMTQ4Njc1IDAwMDAwIG4gCjAwMDAxNDg3NTYgMDAwMDAgbiAKMDAwMDE0ODg5NiAwMDAwMCBuIAowMDAwMTQ5MDM4IDAwMDAwIG4gCjAwMDAxNDkxMTkgMDAwMDAgbiAKMDAwMDE0OTI1OCAwMDAwMCBuIAowMDAwMTQ5NDAwIDAwMDAwIG4gCjAwMDAxNDk0ODEgMDAwMDAgbiAKMDAwMDE0OTYyMSAwMDAwMCBuIAowMDAwMTQ5NzYzIDAwMDAwIG4gCjAwMDAxNDk4NDQgMDAwMDAgbiAKMDAwMDE0OTk4NCAwMDAwMCBuIAowMDAwMTUwMTI2IDAwMDAwIG4gCjAwMDAxNTAyMDYgMDAwMDAgbiAKMDAwMDE1MDM0NiAwMDAwMCBuIAowMDAwMTUwNDg4IDAwMDAwIG4gCjAwMDAxNTA1NjkgMDAwMDAgbiAKMDAwMDE1MDcwOSAwMDAwMCBuIAowMDAwMTUwODUxIDAwMDAwIG4gCjAwMDAxNTA5MzAgMDAwMDAgbiAKMDAwMDE1MTA3MCAwMDAwMCBuIAowMDAwMTUxMjEyIDAwMDAwIG4gCjAwMDAxNTEyOTIgMDAwMDAgbiAKMDAwMDE1MTQzMiAwMDAwMCBuIAowMDAwMTUxNTc0IDAwMDAwIG4gCjAwMDAxNTE2NTQgMDAwMDAgbiAKMDAwMDE1MTc5NCAwMDAwMCBuIAowMDAwMTUxOTM2IDAwMDAwIG4gCjAwMDAxNTIwMTYgMDAwMDAgbiAKMDAwMDE1MjE1NiAwMDAwMCBuIAowMDAwMTUyMjk4IDAwMDAwIG4gCjAwMDAxNTIzNzggMDAwMDAgbiAKMDAwMDE1MjUxOCAwMDAwMCBuIAowMDAwMTUyNjYwIDAwMDAwIG4gCjAwMDAxNTI3MzkgMDAwMDAgbiAKMDAwMDE1Mjg3OSAwMDAwMCBuIAowMDAwMTUzMDIxIDAwMDAwIG4gCjAwMDAxNTMxMDEgMDAwMDAgbiAKMDAwMDE1MzI0MSAwMDAwMCBuIAowMDAwMTUzMzgzIDAwMDAwIG4gCjAwMDAxNTM0NjMgMDAwMDAgbiAKMDAwMDE1MzYwMyAwMDAwMCBuIAowMDAwMTUzNzQ1IDAwMDAwIG4gCjAwMDAxNTM4MjUgMDAwMDAgbiAKMDAwMDE1Mzk2NSAwMDAwMCBuIAowMDAwMTU0MTA3IDAwMDAwIG4gCjAwMDAxNTQxODcgMDAwMDAgbiAKMDAwMDE1NDMyNyAwMDAwMCBuIAowMDAwMTU0NDY5IDAwMDAwIG4gCjAwMDAxNTQ1NDggMDAwMDAgbiAKMDAwMDE1NDY4NyAwMDAwMCBuIAowMDAwMTU0ODI4IDAwMDAwIG4gCjAwMDAxNTQ5MDkgMDAwMDAgbiAKMDAwMDE1NTA0NyAwMDAwMCBuIAowMDAwMTU1MTg3IDAwMDAwIG4gCjAwMDAxODMxNDcgMDAwMDAgbiAKMDAwMDE4MzE3MCAwMDAwMCBuIAowMDAwMTgzOTgzIDAwMDAwIG4gCjAwMDAxODQxOTcgMDAwMDAgbiAKMDAwMDE4NTM5OCAwMDAwMCBuIAowMDAwMTg1NDIwIDAwMDAwIG4gCjAwMDAxODU2MTYgMDAwMDAgbiAKMDAwMDE4NzIzMyAwMDAwMCBuIAowMDAwMTg3MjU1IDAwMDAwIG4gCjAwMDAxODc0NTEgMDAwMDAgbiAKMDAwMDE4OTE1OSAwMDAwMCBuIAowMDAwMTg5MTgxIDAwMDAwIG4gCjAwMDAxODkzNzcgMDAwMDAgbiAKMDAwMDE5MDUzNSAwMDAwMCBuIAowMDAwMTkwNTU3IDAwMDAwIG4gCjAwMDAxOTA3NTMgMDAwMDAgbiAKMDAwMDE5MjI1OSAwMDAwMCBuIAowMDAwMTkyMjgxIDAwMDAwIG4gCjAwMDAxOTI0NzcgMDAwMDAgbiAKMDAwMDE5MjU1OCAwMDAwMCBuIAowMDAwMTkyNjk4IDAwMDAwIG4gCjAwMDAxOTI4NDAgMDAwMDAgbiAKMDAwMDE5MjkyMSAwMDAwMCBuIAowMDAwMTkzMDYxIDAwMDAwIG4gCjAwMDAxOTMyMDMgMDAwMDAgbiAKMDAwMDE5MzI4NCAwMDAwMCBuIAowMDAwMTkzNDIzIDAwMDAwIG4gCjAwMDAxOTM1NjUgMDAwMDAgbiAKMDAwMDE5MzY0NiAwMDAwMCBuIAowMDAwMTkzNzg2IDAwMDAwIG4gCjAwMDAxOTM5MjggMDAwMDAgbiAKMDAwMDE5NDAwOSAwMDAwMCBuIAowMDAwMTk0MTQ5IDAwMDAwIG4gCjAwMDAxOTQyOTEgMDAwMDAgbiAKMDAwMDE5NDM3MiAwMDAwMCBuIAowMDAwMTk0NTEyIDAwMDAwIG4gCjAwMDAxOTQ2NTQgMDAwMDAgbiAKMDAwMDE5NDczNSAwMDAwMCBuIAowMDAwMTk0ODc1IDAwMDAwIG4gCjAwMDAxOTUwMTcgMDAwMDAgbiAKMDAwMDE5NTA5OCAwMDAwMCBuIAowMDAwMTk1MjM4IDAwMDAwIG4gCjAwMDAxOTUzODAgMDAwMDAgbiAKMDAwMDE5NTQ2MCAwMDAwMCBuIAowMDAwMTk1NjAwIDAwMDAwIG4gCjAwMDAxOTU3NDIgMDAwMDAgbiAKMDAwMDE5NTgyNCAwMDAwMCBuIAowMDAwMTk1OTY0IDAwMDAwIG4gCjAwMDAxOTYxMDYgMDAwMDAgbiAKMDAwMDE5NjE4OCAwMDAwMCBuIAowMDAwMTk2MzI4IDAwMDAwIG4gCjAwMDAxOTY0NzAgMDAwMDAgbiAKMDAwMDE5NjU1MiAwMDAwMCBuIAowMDAwMTk2NjkyIDAwMDAwIG4gCjAwMDAxOTY4MzQgMDAwMDAgbiAKMDAwMDE5NjkxNiAwMDAwMCBuIAowMDAwMTk3MDU2IDAwMDAwIG4gCjAwMDAxOTcxOTggMDAwMDAgbiAKMDAwMDE5NzI4MCAwMDAwMCBuIAowMDAwMTk3NDIwIDAwMDAwIG4gCjAwMDAxOTc1NjIgMDAwMDAgbiAKMDAwMDE5NzY0NCAwMDAwMCBuIAowMDAwMTk3Nzg0IDAwMDAwIG4gCjAwMDAxOTc5MjYgMDAwMDAgbiAKMDAwMDE5ODAwOCAwMDAwMCBuIAowMDAwMTk4MTQ4IDAwMDAwIG4gCjAwMDAxOTgyOTAgMDAwMDAgbiAKMDAwMDE5ODM3MiAwMDAwMCBuIAowMDAwMTk4NTExIDAwMDAwIG4gCjAwMDAxOTg2NTMgMDAwMDAgbiAKMDAwMDE5ODczNCAwMDAwMCBuIAowMDAwMTk4ODc0IDAwMDAwIG4gCjAwMDAxOTkwMTYgMDAwMDAgbiAKMDAwMDE5OTA5OCAwMDAwMCBuIAowMDAwMTk5MjM4IDAwMDAwIG4gCjAwMDAxOTkzODAgMDAwMDAgbiAKMDAwMDE5OTQ2MCAwMDAwMCBuIAowMDAwMTk5NjAwIDAwMDAwIG4gCjAwMDAxOTk3NDIgMDAwMDAgbiAKMDAwMDE5OTgyNCAwMDAwMCBuIAowMDAwMTk5OTY0IDAwMDAwIG4gCjAwMDAyMDAxMDYgMDAwMDAgbiAKMDAwMDIwMDE4NyAwMDAwMCBuIAowMDAwMjAwMzI3IDAwMDAwIG4gCjAwMDAyMDA0NjkgMDAwMDAgbiAKMDAwMDIwMDU1MSAwMDAwMCBuIAowMDAwMjAwNjkwIDAwMDAwIG4gCjAwMDAyMDA4MzIgMDAwMDAgbiAKMDAwMDIwMDkxMyAwMDAwMCBuIAowMDAwMjAxMDUzIDAwMDAwIG4gCjAwMDAyMDExOTUgMDAwMDAgbiAKMDAwMDIwMTI3NyAwMDAwMCBuIAowMDAwMjAxNDE3IDAwMDAwIG4gCjAwMDAyMDE1NTkgMDAwMDAgbiAKMDAwMDIwMTY0MCAwMDAwMCBuIAowMDAwMjAxNzc5IDAwMDAwIG4gCjAwMDAyMDE5MjEgMDAwMDAgbiAKMDAwMDIwMjAwMyAwMDAwMCBuIAowMDAwMjAyMTQzIDAwMDAwIG4gCjAwMDAyMDIyODUgMDAwMDAgbiAKMDAwMDIwMjM2NiAwMDAwMCBuIAowMDAwMjAyNTA2IDAwMDAwIG4gCjAwMDAyMDI2NDggMDAwMDAgbiAKMDAwMDIwMjcyOCAwMDAwMCBuIAowMDAwMjAyODY4IDAwMDAwIG4gCjAwMDAyMDMwMTAgMDAwMDAgbiAKMDAwMDIwMzA5MiAwMDAwMCBuIAowMDAwMjAzMjMyIDAwMDAwIG4gCjAwMDAyMDMzNzQgMDAwMDAgbiAKMDAwMDIwMzQ1NiAwMDAwMCBuIAowMDAwMjAzNTk2IDAwMDAwIG4gCjAwMDAyMDM3MzggMDAwMDAgbiAKMDAwMDIwMzgyMCAwMDAwMCBuIAowMDAwMjAzOTYwIDAwMDAwIG4gCjAwMDAyMDQxMDIgMDAwMDAgbiAKMDAwMDIwNDE4NCAwMDAwMCBuIAowMDAwMjA0MzI0IDAwMDAwIG4gCjAwMDAyMDQ0NjYgMDAwMDAgbiAKMDAwMDIwNDU0NyAwMDAwMCBuIAowMDAwMjA0Njg3IDAwMDAwIG4gCjAwMDAyMDQ4MjkgMDAwMDAgbiAKMDAwMDIwNDkxMSAwMDAwMCBuIAowMDAwMjA1MDUxIDAwMDAwIG4gCjAwMDAyMDUxOTMgMDAwMDAgbiAKMDAwMDIwNTI3NSAwMDAwMCBuIAowMDAwMjA1NDE0IDAwMDAwIG4gCjAwMDAyMDU1NTYgMDAwMDAgbiAKMDAwMDIwNTYzOCAwMDAwMCBuIAowMDAwMjA1Nzc4IDAwMDAwIG4gCjAwMDAyMDU5MjAgMDAwMDAgbiAKMDAwMDIwNjAwMiAwMDAwMCBuIAowMDAwMjA2MTQyIDAwMDAwIG4gCjAwMDAyMDYyODQgMDAwMDAgbiAKMDAwMDIwNjM2NCAwMDAwMCBuIAowMDAwMjA2NTA0IDAwMDAwIG4gCjAwMDAyMDY2NDYgMDAwMDAgbiAKMDAwMDIwNjcyOCAwMDAwMCBuIAowMDAwMjA2ODY4IDAwMDAwIG4gCjAwMDAyMDcwMTAgMDAwMDAgbiAKMDAwMDIwNzA5MiAwMDAwMCBuIAowMDAwMjA3MjMwIDAwMDAwIG4gCjAwMDAyMDczNjkgMDAwMDAgbiAKMDAwMDIwNzUwOCAwMDAwMCBuIAowMDAwMjA3NTkwIDAwMDAwIG4gCjAwMDAyMDc3MjkgMDAwMDAgbiAKMDAwMDIwNzg2OCAwMDAwMCBuIAowMDAwMjA4MDA3IDAwMDAwIG4gCjAwMDAyMDgwODkgMDAwMDAgbiAKMDAwMDIwODIyOCAwMDAwMCBuIAowMDAwMjA4MzY3IDAwMDAwIG4gCjAwMDAyMDg1MDYgMDAwMDAgbiAKMDAwMDIwODU4OCAwMDAwMCBuIAowMDAwMjA4NzI4IDAwMDAwIG4gCjAwMDAyMDg4NzAgMDAwMDAgbiAKMDAwMDIwODk1MiAwMDAwMCBuIAowMDAwMjA5MDkyIDAwMDAwIG4gCjAwMDAyMDkyMzQgMDAwMDAgbiAKMDAwMDIwOTMxNiAwMDAwMCBuIAowMDAwMjA5NDU2IDAwMDAwIG4gCjAwMDAyMDk1OTggMDAwMDAgbiAKMDAwMDIwOTY4MCAwMDAwMCBuIAowMDAwMjA5ODE4IDAwMDAwIG4gCjAwMDAyMDk5NTcgMDAwMDAgbiAKMDAwMDIxMDA5NiAwMDAwMCBuIAowMDAwMjEwMTc3IDAwMDAwIG4gCjAwMDAyMTAzMTYgMDAwMDAgbiAKMDAwMDIxMDQ1NyAwMDAwMCBuIAowMDAwMjEwNTM5IDAwMDAwIG4gCjAwMDAyMTA2NzcgMDAwMDAgbiAKMDAwMDIxMDgxNyAwMDAwMCBuIAowMDAwMjEwODk3IDAwMDAwIG4gCjAwMDAyMTEwMzUgMDAwMDAgbiAKMDAwMDIxMTE3NSAwMDAwMCBuIAowMDAwMjI4MjQ1IDAwMDAwIG4gCjAwMDAyMjgyNjggMDAwMDAgbiAKMDAwMDIyOTEyMSAwMDAwMCBuIAowMDAwMjI5MzM1IDAwMDAwIG4gCjAwMDAyMzExMDQgMDAwMDAgbiAKMDAwMDIzMTEyNiAwMDAwMCBuIAowMDAwMjMxMzIyIDAwMDAwIG4gCjAwMDAyMzMwNDggMDAwMDAgbiAKMDAwMDIzMzA3MCAwMDAwMCBuIAowMDAwMjMzMjY2IDAwMDAwIG4gCjAwMDAyMzUxMTYgMDAwMDAgbiAKMDAwMDIzNTEzOCAwMDAwMCBuIAowMDAwMjM1MzM0IDAwMDAwIG4gCjAwMDAyMzcxODAgMDAwMDAgbiAKMDAwMDIzNzIwMiAwMDAwMCBuIAowMDAwMjM3Mzk4IDAwMDAwIG4gCjAwMDAyMzkwMzcgMDAwMDAgbiAKMDAwMDIzOTA1OSAwMDAwMCBuIAowMDAwMjM5MjU1IDAwMDAwIG4gCjAwMDAyMzkzMzcgMDAwMDAgbiAKMDAwMDIzOTQ3NyAwMDAwMCBuIAowMDAwMjM5NjE5IDAwMDAwIG4gCjAwMDAyMzk3MDEgMDAwMDAgbiAKMDAwMDIzOTg0MSAwMDAwMCBuIAowMDAwMjM5OTgzIDAwMDAwIG4gCjAwMDAyNDAwNjUgMDAwMDAgbiAKMDAwMDI0MDIwNSAwMDAwMCBuIAowMDAwMjQwMzQ3IDAwMDAwIG4gCjAwMDAyNDA0MjkgMDAwMDAgbiAKMDAwMDI0MDU2OSAwMDAwMCBuIAowMDAwMjQwNzExIDAwMDAwIG4gCjAwMDAyNDA3OTIgMDAwMDAgbiAKMDAwMDI0MDkzMiAwMDAwMCBuIAowMDAwMjQxMDc0IDAwMDAwIG4gCjAwMDAyNDExNTYgMDAwMDAgbiAKMDAwMDI0MTI5NiAwMDAwMCBuIAowMDAwMjQxNDM4IDAwMDAwIG4gCjAwMDAyNDE1MjAgMDAwMDAgbiAKMDAwMDI0MTY2MCAwMDAwMCBuIAowMDAwMjQxODAyIDAwMDAwIG4gCjAwMDAyNDE4ODQgMDAwMDAgbiAKMDAwMDI0MjAyNCAwMDAwMCBuIAowMDAwMjQyMTY2IDAwMDAwIG4gCjAwMDAyNDIyNDggMDAwMDAgbiAKMDAwMDI0MjM4OCAwMDAwMCBuIAowMDAwMjQyNTMwIDAwMDAwIG4gCjAwMDAyNDI2MTAgMDAwMDAgbiAKMDAwMDI0Mjc1MCAwMDAwMCBuIAowMDAwMjQyODkyIDAwMDAwIG4gCjAwMDAyNDI5NzMgMDAwMDAgbiAKMDAwMDI0MzExMyAwMDAwMCBuIAowMDAwMjQzMjU1IDAwMDAwIG4gCjAwMDAyNDMzMzYgMDAwMDAgbiAKMDAwMDI0MzQ3NiAwMDAwMCBuIAowMDAwMjQzNjE4IDAwMDAwIG4gCjAwMDAyNDM2OTkgMDAwMDAgbiAKMDAwMDI0MzgzOSAwMDAwMCBuIAowMDAwMjQzOTgxIDAwMDAwIG4gCjAwMDAyNDQwNjIgMDAwMDAgbiAKMDAwMDI0NDIwMiAwMDAwMCBuIAowMDAwMjQ0MzQ0IDAwMDAwIG4gCjAwMDAyNDQ0MjQgMDAwMDAgbiAKMDAwMDI0NDU2NCAwMDAwMCBuIAowMDAwMjQ0NzA2IDAwMDAwIG4gCjAwMDAyNDQ3ODcgMDAwMDAgbiAKMDAwMDI0NDkyNyAwMDAwMCBuIAowMDAwMjQ1MDY5IDAwMDAwIG4gCjAwMDAyNDUxNTAgMDAwMDAgbiAKMDAwMDI0NTI5MCAwMDAwMCBuIAowMDAwMjQ1NDMyIDAwMDAwIG4gCjAwMDAyNDU1MTMgMDAwMDAgbiAKMDAwMDI0NTY1MyAwMDAwMCBuIAowMDAwMjQ1Nzk1IDAwMDAwIG4gCjAwMDAyNDU4NzYgMDAwMDAgbiAKMDAwMDI0NjAxNiAwMDAwMCBuIAowMDAwMjQ2MTU4IDAwMDAwIG4gCjAwMDAyNDYyMzggMDAwMDAgbiAKMDAwMDI0NjM3NyAwMDAwMCBuIAowMDAwMjQ2NTE5IDAwMDAwIG4gCjAwMDAyNDY2MDEgMDAwMDAgbiAKMDAwMDI0Njc0MSAwMDAwMCBuIAowMDAwMjQ2ODgzIDAwMDAwIG4gCjAwMDAyNDY5NjUgMDAwMDAgbiAKMDAwMDI0NzEwNSAwMDAwMCBuIAowMDAwMjQ3MjQ3IDAwMDAwIG4gCjAwMDAyNDczMjkgMDAwMDAgbiAKMDAwMDI0NzQ2OSAwMDAwMCBuIAowMDAwMjQ3NjExIDAwMDAwIG4gCjAwMDAyNDc2OTMgMDAwMDAgbiAKMDAwMDI0NzgzMyAwMDAwMCBuIAowMDAwMjQ3OTc1IDAwMDAwIG4gCjAwMDAyNDgwNTYgMDAwMDAgbiAKMDAwMDI0ODE5NiAwMDAwMCBuIAowMDAwMjQ4MzM4IDAwMDAwIG4gCjAwMDAyNDg0MjAgMDAwMDAgbiAKMDAwMDI0ODU2MCAwMDAwMCBuIAowMDAwMjQ4NzAyIDAwMDAwIG4gCjAwMDAyNDg3ODQgMDAwMDAgbiAKMDAwMDI0ODkyNCAwMDAwMCBuIAowMDAwMjQ5MDY2IDAwMDAwIG4gCjAwMDAyNDkxNDggMDAwMDAgbiAKMDAwMDI0OTI4OCAwMDAwMCBuIAowMDAwMjQ5NDMwIDAwMDAwIG4gCjAwMDAyNDk1MTIgMDAwMDAgbiAKMDAwMDI0OTY1MiAwMDAwMCBuIAowMDAwMjQ5Nzk0IDAwMDAwIG4gCjAwMDAyNDk4NzQgMDAwMDAgbiAKMDAwMDI1MDAxNCAwMDAwMCBuIAowMDAwMjUwMTU2IDAwMDAwIG4gCjAwMDAyNTAyMzcgMDAwMDAgbiAKMDAwMDI1MDM3NyAwMDAwMCBuIAowMDAwMjUwNTE5IDAwMDAwIG4gCjAwMDAyNTA2MDAgMDAwMDAgbiAKMDAwMDI1MDc0MCAwMDAwMCBuIAowMDAwMjUwODgyIDAwMDAwIG4gCjAwMDAyNTA5NjMgMDAwMDAgbiAKMDAwMDI1MTEwMyAwMDAwMCBuIAowMDAwMjUxMjQ1IDAwMDAwIG4gCjAwMDAyNTEzMjYgMDAwMDAgbiAKMDAwMDI1MTQ2NSAwMDAwMCBuIAowMDAwMjUxNjA3IDAwMDAwIG4gCjAwMDAyNTE2ODcgMDAwMDAgbiAKMDAwMDI1MTgyNyAwMDAwMCBuIAowMDAwMjUxOTY5IDAwMDAwIG4gCjAwMDAyNTIwNTAgMDAwMDAgbiAKMDAwMDI1MjE5MCAwMDAwMCBuIAowMDAwMjUyMzMyIDAwMDAwIG4gCjAwMDAyNTI0MTMgMDAwMDAgbiAKMDAwMDI1MjU1MyAwMDAwMCBuIAowMDAwMjUyNjk1IDAwMDAwIG4gCjAwMDAyNTI3NzYgMDAwMDAgbiAKMDAwMDI1MjkxNiAwMDAwMCBuIAowMDAwMjUzMDU4IDAwMDAwIG4gCjAwMDAyNTMxMzkgMDAwMDAgbiAKMDAwMDI1MzI3OSAwMDAwMCBuIAowMDAwMjUzNDIxIDAwMDAwIG4gCjAwMDAyNTM1MDEgMDAwMDAgbiAKMDAwMDI1MzY0MSAwMDAwMCBuIAowMDAwMjUzNzgzIDAwMDAwIG4gCjAwMDAyNTM4NjQgMDAwMDAgbiAKMDAwMDI1NDAwNCAwMDAwMCBuIAowMDAwMjU0MTQ2IDAwMDAwIG4gCjAwMDAyNTQyMjcgMDAwMDAgbiAKMDAwMDI1NDM2NyAwMDAwMCBuIAowMDAwMjU0NTA5IDAwMDAwIG4gCjAwMDAyNTQ1OTAgMDAwMDAgbiAKMDAwMDI1NDczMCAwMDAwMCBuIAowMDAwMjU0ODcyIDAwMDAwIG4gCjAwMDAyNTQ5NTMgMDAwMDAgbiAKMDAwMDI1NTA5MyAwMDAwMCBuIAowMDAwMjU1MjM1IDAwMDAwIG4gCjAwMDAyNTUzMTUgMDAwMDAgbiAKMDAwMDI1NTQ1NSAwMDAwMCBuIAowMDAwMjU1NTk3IDAwMDAwIG4gCjAwMDAyNTU2NzggMDAwMDAgbiAKMDAwMDI1NTgxNyAwMDAwMCBuIAowMDAwMjU1OTU5IDAwMDAwIG4gCjAwMDAyNTYwNDAgMDAwMDAgbiAKMDAwMDI1NjE4MCAwMDAwMCBuIAowMDAwMjU2MzIyIDAwMDAwIG4gCjAwMDAyNTY0MDMgMDAwMDAgbiAKMDAwMDI1NjU0MyAwMDAwMCBuIAowMDAwMjU2Njg1IDAwMDAwIG4gCjAwMDAyNTY3NjYgMDAwMDAgbiAKMDAwMDI1NjkwNiAwMDAwMCBuIAowMDAwMjU3MDQ4IDAwMDAwIG4gCjAwMDAyNTcxMjggMDAwMDAgbiAKMDAwMDI1NzI2OCAwMDAwMCBuIAowMDAwMjU3NDEwIDAwMDAwIG4gCjAwMDAyNTc0OTIgMDAwMDAgbiAKMDAwMDI1NzYzMiAwMDAwMCBuIAowMDAwMjU3Nzc0IDAwMDAwIG4gCjAwMDAyNTc4NTYgMDAwMDAgbiAKMDAwMDI1Nzk5NSAwMDAwMCBuIAowMDAwMjU4MTM2IDAwMDAwIG4gCjAwMDAyNTgyMTggMDAwMDAgbiAKMDAwMDI1ODM1NiAwMDAwMCBuIAowMDAwMjU4NDk2IDAwMDAwIG4gCjAwMDAyNTg1NzggMDAwMDAgbiAKMDAwMDI1ODcxNiAwMDAwMCBuIAowMDAwMjU4ODU2IDAwMDAwIG4gCjAwMDAyNzE5MTYgMDAwMDAgbiAKMDAwMDI3MTkzOSAwMDAwMCBuIAowMDAwMjcyODI0IDAwMDAwIG4gCjAwMDAyNzMwMzggMDAwMDAgbiAKMDAwMDI3NDMwMiAwMDAwMCBuIAowMDAwMjc0MzI0IDAwMDAwIG4gCjAwMDAyNzQ1MjAgMDAwMDAgbiAKMDAwMDI3NjE3OCAwMDAwMCBuIAowMDAwMjc2MjAwIDAwMDAwIG4gCjAwMDAyNzYzOTYgMDAwMDAgbiAKMDAwMDI3NzU3OCAwMDAwMCBuIAowMDAwMjc3NjAwIDAwMDAwIG4gCjAwMDAyNzc3OTYgMDAwMDAgbiAKMDAwMDI3ODg5NyAwMDAwMCBuIAowMDAwMjc4OTE5IDAwMDAwIG4gCjAwMDAyNzkxMTUgMDAwMDAgbiAKMDAwMDI4MTAxMCAwMDAwMCBuIAowMDAwMjgxMDMyIDAwMDAwIG4gCjAwMDAyODEyMjggMDAwMDAgbiAKMDAwMDI4MTMwOSAwMDAwMCBuIAowMDAwMjgxNDQ5IDAwMDAwIG4gCjAwMDAyODE1OTEgMDAwMDAgbiAKMDAwMDI4MTY3MyAwMDAwMCBuIAowMDAwMjgxODEzIDAwMDAwIG4gCjAwMDAyODE5NTUgMDAwMDAgbiAKMDAwMDI4MjAzNyAwMDAwMCBuIAowMDAwMjgyMTc3IDAwMDAwIG4gCjAwMDAyODIzMTkgMDAwMDAgbiAKMDAwMDI4MjQwMSAwMDAwMCBuIAowMDAwMjgyNTQxIDAwMDAwIG4gCjAwMDAyODI2ODMgMDAwMDAgbiAKMDAwMDI4Mjc2NSAwMDAwMCBuIAowMDAwMjgyOTA1IDAwMDAwIG4gCjAwMDAyODMwNDcgMDAwMDAgbiAKMDAwMDI4MzEyNyAwMDAwMCBuIAowMDAwMjgzMjY3IDAwMDAwIG4gCjAwMDAyODM0MDkgMDAwMDAgbiAKMDAwMDI4MzQ5MSAwMDAwMCBuIAowMDAwMjgzNjMxIDAwMDAwIG4gCjAwMDAyODM3NzMgMDAwMDAgbiAKMDAwMDI4Mzg1NSAwMDAwMCBuIAowMDAwMjgzOTk1IDAwMDAwIG4gCjAwMDAyODQxMzcgMDAwMDAgbiAKMDAwMDI4NDIxOSAwMDAwMCBuIAowMDAwMjg0MzU5IDAwMDAwIG4gCjAwMDAyODQ1MDEgMDAwMDAgbiAKMDAwMDI4NDU4MyAwMDAwMCBuIAowMDAwMjg0NzIzIDAwMDAwIG4gCjAwMDAyODQ4NjUgMDAwMDAgbiAKMDAwMDI4NDk0NyAwMDAwMCBuIAowMDAwMjg1MDg3IDAwMDAwIG4gCjAwMDAyODUyMjkgMDAwMDAgbiAKMDAwMDI4NTMxMSAwMDAwMCBuIAowMDAwMjg1NDUxIDAwMDAwIG4gCjAwMDAyODU1OTMgMDAwMDAgbiAKMDAwMDI4NTY3NSAwMDAwMCBuIAowMDAwMjg1ODE1IDAwMDAwIG4gCjAwMDAyODU5NTcgMDAwMDAgbiAKMDAwMDI4NjAzOSAwMDAwMCBuIAowMDAwMjg2MTc5IDAwMDAwIG4gCjAwMDAyODYzMjEgMDAwMDAgbiAKMDAwMDI4NjQwMyAwMDAwMCBuIAowMDAwMjg2NTQzIDAwMDAwIG4gCjAwMDAyODY2ODUgMDAwMDAgbiAKMDAwMDI4Njc2NSAwMDAwMCBuIAowMDAwMjg2OTA1IDAwMDAwIG4gCjAwMDAyODcwNDcgMDAwMDAgbiAKMDAwMDI4NzEyOSAwMDAwMCBuIAowMDAwMjg3MjY5IDAwMDAwIG4gCjAwMDAyODc0MTEgMDAwMDAgbiAKMDAwMDI4NzQ5MyAwMDAwMCBuIAowMDAwMjg3NjMzIDAwMDAwIG4gCjAwMDAyODc3NzUgMDAwMDAgbiAKMDAwMDI4Nzg1NiAwMDAwMCBuIAowMDAwMjg3OTk2IDAwMDAwIG4gCjAwMDAyODgxMzggMDAwMDAgbiAKMDAwMDI4ODIyMCAwMDAwMCBuIAowMDAwMjg4MzU5IDAwMDAwIG4gCjAwMDAyODg1MDEgMDAwMDAgbiAKMDAwMDI4ODU4MyAwMDAwMCBuIAowMDAwMjg4NzIzIDAwMDAwIG4gCjAwMDAyODg4NjUgMDAwMDAgbiAKMDAwMDI4ODk0NyAwMDAwMCBuIAowMDAwMjg5MDg3IDAwMDAwIG4gCjAwMDAyODkyMjkgMDAwMDAgbiAKMDAwMDI4OTMxMSAwMDAwMCBuIAowMDAwMjg5NDUxIDAwMDAwIG4gCjAwMDAyODk1OTMgMDAwMDAgbiAKMDAwMDI4OTY3NCAwMDAwMCBuIAowMDAwMjg5ODEzIDAwMDAwIG4gCjAwMDAyODk5NTUgMDAwMDAgbiAKMDAwMDI5MDAzNyAwMDAwMCBuIAowMDAwMjkwMTc3IDAwMDAwIG4gCjAwMDAyOTAzMTkgMDAwMDAgbiAKMDAwMDI5MDM5OSAwMDAwMCBuIAowMDAwMjkwNTM4IDAwMDAwIG4gCjAwMDAyOTA2ODAgMDAwMDAgbiAKMDAwMDI5MDc2MiAwMDAwMCBuIAowMDAwMjkwOTAyIDAwMDAwIG4gCjAwMDAyOTEwNDQgMDAwMDAgbiAKMDAwMDI5MTEyNiAwMDAwMCBuIAowMDAwMjkxMjY2IDAwMDAwIG4gCjAwMDAyOTE0MDggMDAwMDAgbiAKMDAwMDI5MTQ5MCAwMDAwMCBuIAowMDAwMjkxNjI5IDAwMDAwIG4gCjAwMDAyOTE3NzEgMDAwMDAgbiAKMDAwMDI5MTg1MyAwMDAwMCBuIAowMDAwMjkxOTkzIDAwMDAwIG4gCjAwMDAyOTIxMzUgMDAwMDAgbiAKMDAwMDI5MjIxNyAwMDAwMCBuIAowMDAwMjkyMzU3IDAwMDAwIG4gCjAwMDAyOTI0OTkgMDAwMDAgbiAKMDAwMDI5MjU4MSAwMDAwMCBuIAowMDAwMjkyNzIxIDAwMDAwIG4gCjAwMDAyOTI4NjMgMDAwMDAgbiAKMDAwMDI5Mjk0NSAwMDAwMCBuIAowMDAwMjkzMDg1IDAwMDAwIG4gCjAwMDAyOTMyMjcgMDAwMDAgbiAKMDAwMDI5MzMwOSAwMDAwMCBuIAowMDAwMjkzNDQ5IDAwMDAwIG4gCjAwMDAyOTM1OTEgMDAwMDAgbiAKMDAwMDI5MzY3MiAwMDAwMCBuIAowMDAwMjkzODEyIDAwMDAwIG4gCjAwMDAyOTM5NTQgMDAwMDAgbiAKMDAwMDI5NDAzNiAwMDAwMCBuIAowMDAwMjk0MTc2IDAwMDAwIG4gCjAwMDAyOTQzMTggMDAwMDAgbiAKMDAwMDI5NDM5OCAwMDAwMCBuIAowMDAwMjk0NTM4IDAwMDAwIG4gCjAwMDAyOTQ2ODAgMDAwMDAgbiAKMDAwMDI5NDc2MiAwMDAwMCBuIAowMDAwMjk0OTAyIDAwMDAwIG4gCjAwMDAyOTUwNDQgMDAwMDAgbiAKMDAwMDI5NTEyNiAwMDAwMCBuIAowMDAwMjk1MjY2IDAwMDAwIG4gCjAwMDAyOTU0MDggMDAwMDAgbiAKMDAwMDI5NTQ5MCAwMDAwMCBuIAowMDAwMjk1NjMwIDAwMDAwIG4gCjAwMDAyOTU3NzIgMDAwMDAgbiAKMDAwMDI5NTg1NCAwMDAwMCBuIAowMDAwMjk1OTkzIDAwMDAwIG4gCjAwMDAyOTYxMzUgMDAwMDAgbiAKMDAwMDI5NjIxNyAwMDAwMCBuIAowMDAwMjk2MzU2IDAwMDAwIG4gCjAwMDAyOTY0OTggMDAwMDAgbiAKMDAwMDI5NjU4MCAwMDAwMCBuIAowMDAwMjk2NzIwIDAwMDAwIG4gCjAwMDAyOTY4NjIgMDAwMDAgbiAKMDAwMDI5Njk0NCAwMDAwMCBuIAowMDAwMjk3MDg0IDAwMDAwIG4gCjAwMDAyOTcyMjYgMDAwMDAgbiAKMDAwMDI5NzMwOCAwMDAwMCBuIAowMDAwMjk3NDQ4IDAwMDAwIG4gCjAwMDAyOTc1OTAgMDAwMDAgbiAKMDAwMDI5NzY3MiAwMDAwMCBuIAowMDAwMjk3ODEyIDAwMDAwIG4gCjAwMDAyOTc5NTQgMDAwMDAgbiAKMDAwMDI5ODAzNCAwMDAwMCBuIAowMDAwMjk4MTc0IDAwMDAwIG4gCjAwMDAyOTgzMTYgMDAwMDAgbiAKMDAwMDI5ODM5OCAwMDAwMCBuIAowMDAwMjk4NTM4IDAwMDAwIG4gCjAwMDAyOTg2ODAgMDAwMDAgbiAKMDAwMDI5ODc2MSAwMDAwMCBuIAowMDAwMjk4OTAwIDAwMDAwIG4gCjAwMDAyOTkwMzkgMDAwMDAgbiAKMDAwMDI5OTE4MSAwMDAwMCBuIAowMDAwMjk5MjYzIDAwMDAwIG4gCjAwMDAyOTk0MDIgMDAwMDAgbiAKMDAwMDI5OTUzOSAwMDAwMCBuIAowMDAwMjk5NjgwIDAwMDAwIG4gCjAwMDAyOTk3NjIgMDAwMDAgbiAKMDAwMDI5OTkwMCAwMDAwMCBuIAowMDAwMzAwMDQwIDAwMDAwIG4gCjAwMDAzMDAxMjIgMDAwMDAgbiAKMDAwMDMwMDI2MCAwMDAwMCBuIAowMDAwMzAwNDAwIDAwMDAwIG4gCjAwMDAzMTk1MzkgMDAwMDAgbiAKMDAwMDMxOTU2MiAwMDAwMCBuIAowMDAwMzIwNDMxIDAwMDAwIG4gCjAwMDAzMjA2NDUgMDAwMDAgbiAKMDAwMDMyMjcwMyAwMDAwMCBuIAowMDAwMzIyNzI1IDAwMDAwIG4gCjAwMDAzMjI5MjEgMDAwMDAgbiAKMDAwMDMyNDA4OSAwMDAwMCBuIAowMDAwMzI0MTExIDAwMDAwIG4gCjAwMDAzMjQzMDcgMDAwMDAgbiAKMDAwMDMyNTc2MiAwMDAwMCBuIAowMDAwMzI1Nzg0IDAwMDAwIG4gCjAwMDAzMjU5ODAgMDAwMDAgbiAKMDAwMDMyNzU5NCAwMDAwMCBuIAowMDAwMzI3NjE2IDAwMDAwIG4gCjAwMDAzMjc4MTIgMDAwMDAgbiAKMDAwMDMyOTk5MiAwMDAwMCBuIAowMDAwMzMwMDE0IDAwMDAwIG4gCjAwMDAzMzAyMTAgMDAwMDAgbiAKMDAwMDMzMDI5MCAwMDAwMCBuIAowMDAwMzMwNDI5IDAwMDAwIG4gCjAwMDAzMzA1NzEgMDAwMDAgbiAKMDAwMDMzMTYyOSAwMDAwMCBuIAowMDAwMzMxNjUwIDAwMDAwIG4gCjAwMDAzMzE2ODcgMDAwMDAgbiAKMDAwMDMzMTkwMSAwMDAwMCBuIAowMDAwMzMzOTM5IDAwMDAwIG4gCjAwMDAzMzM5NjEgMDAwMDAgbiAKMDAwMDMzNDE1NyAwMDAwMCBuIAowMDAwMzM1OTI2IDAwMDAwIG4gCjAwMDAzMzU5NDggMDAwMDAgbiAKMDAwMDMzNjE0NCAwMDAwMCBuIAowMDAwMzc0NTE3IDAwMDAwIG4gCjAwMDAzNzQ1NDAgMDAwMDAgbiAKMDAwMDQ5NzY4MCAwMDAwMCBuIAowMDAwNDk3NzA0IDAwMDAwIG4gCjAwMDA0OTg3NzMgMDAwMDAgbiAKMDAwMDQ5ODc5NCAwMDAwMCBuIAowMDAwNDk4OTkwIDAwMDAwIG4gCjAwMDA2NDEwOTUgMDAwMDAgbiAKMDAwMDY0MTExOSAwMDAwMCBuIAowMDAwNjQzMDU4IDAwMDAwIG4gCjAwMDA2NDMwODAgMDAwMDAgbiAKMDAwMDY0MzI3NiAwMDAwMCBuIAowMDAwNjQ0NTIzIDAwMDAwIG4gCjAwMDA2NDQ1NDUgMDAwMDAgbiAKMDAwMDY0NDc0MSAwMDAwMCBuIAowMDAwNjQ2MDI2IDAwMDAwIG4gCjAwMDA2NDYwNDggMDAwMDAgbiAKMDAwMDY0NjI0NCAwMDAwMCBuIAowMDAwNjQ3Mzk2IDAwMDAwIG4gCjAwMDA2NDc0MTggMDAwMDAgbiAKMDAwMDY0NzYxNCAwMDAwMCBuIAowMDAwNjQ4OTMyIDAwMDAwIG4gCjAwMDA2NDg5NTQgMDAwMDAgbiAKMDAwMDY0OTE1MCAwMDAwMCBuIAowMDAwNjUwNDU0IDAwMDAwIG4gCjAwMDA2NTA0NzYgMDAwMDAgbiAKMDAwMDY1MDY3MiAwMDAwMCBuIAowMDAwNjUyMTMwIDAwMDAwIG4gCjAwMDA2NTIxNTIgMDAwMDAgbiAKMDAwMDY1MjM0OCAwMDAwMCBuIAowMDAwNjUzNjQ1IDAwMDAwIG4gCjAwMDA2NTM2NjcgMDAwMDAgbiAKMDAwMDY1Mzg2MyAwMDAwMCBuIAowMDAwNjU0NjA5IDAwMDAwIG4gCjAwMDA2NTQ2MzAgMDAwMDAgbiAKMDAwMDY1NDgyNiAwMDAwMCBuIAowMDAwNjU3MzYzIDAwMDAwIG4gCjAwMDA2NTczODUgMDAwMDAgbiAKMDAwMDY1NzU4MSAwMDAwMCBuIAowMDAwNjU3NjYzIDAwMDAwIG4gCjAwMDA2NTc4MDIgMDAwMDAgbiAKMDAwMDY1Nzk0MSAwMDAwMCBuIAowMDAwNjU4MDgzIDAwMDAwIG4gCjAwMDA2NTgxNjQgMDAwMDAgbiAKMDAwMDY1ODMwNCAwMDAwMCBuIAowMDAwNjU4NDQ2IDAwMDAwIG4gCjAwMDA2NTg1MjggMDAwMDAgbiAKMDAwMDY1ODY2OCAwMDAwMCBuIAowMDAwNjU4ODEwIDAwMDAwIG4gCjAwMDA2NTg4OTIgMDAwMDAgbiAKMDAwMDY1OTAzMiAwMDAwMCBuIAowMDAwNjU5MTc0IDAwMDAwIG4gCjAwMDA2NTkyNTQgMDAwMDAgbiAKMDAwMDY1OTM5NCAwMDAwMCBuIAowMDAwNjU5NTM2IDAwMDAwIG4gCjAwMDA2NTk2MTggMDAwMDAgbiAKMDAwMDY1OTc1OCAwMDAwMCBuIAowMDAwNjU5OTAwIDAwMDAwIG4gCjAwMDA2NTk5ODIgMDAwMDAgbiAKMDAwMDY2MDEyMiAwMDAwMCBuIAowMDAwNjYwMjY0IDAwMDAwIG4gCjAwMDA2NjAzNDYgMDAwMDAgbiAKMDAwMDY2MDQ4NiAwMDAwMCBuIAowMDAwNjYwNjI4IDAwMDAwIG4gCjAwMDA2NjA3MTAgMDAwMDAgbiAKMDAwMDY2MDg1MCAwMDAwMCBuIAowMDAwNjYwOTkyIDAwMDAwIG4gCjAwMDA2NjEwNzMgMDAwMDAgbiAKMDAwMDY2MTIxMyAwMDAwMCBuIAowMDAwNjYxMzU1IDAwMDAwIG4gCjAwMDA2NjE0MzcgMDAwMDAgbiAKMDAwMDY2MTU3NyAwMDAwMCBuIAowMDAwNjYxNzE5IDAwMDAwIG4gCjAwMDA2NjE4MDEgMDAwMDAgbiAKMDAwMDY2MTk0MSAwMDAwMCBuIAowMDAwNjYyMDgzIDAwMDAwIG4gCjAwMDA2NjIxNjUgMDAwMDAgbiAKMDAwMDY2MjMwNSAwMDAwMCBuIAowMDAwNjYyNDQ3IDAwMDAwIG4gCjAwMDA2NjI1MjcgMDAwMDAgbiAKMDAwMDY2MjY2NyAwMDAwMCBuIAowMDAwNjYyODA5IDAwMDAwIG4gCjAwMDA2NjI4OTEgMDAwMDAgbiAKMDAwMDY2MzAzMSAwMDAwMCBuIAowMDAwNjYzMTczIDAwMDAwIG4gCjAwMDA2NjMyNTUgMDAwMDAgbiAKMDAwMDY2MzM5NSAwMDAwMCBuIAowMDAwNjYzNTM3IDAwMDAwIG4gCjAwMDA2NjM2MTkgMDAwMDAgbiAKMDAwMDY2Mzc1OSAwMDAwMCBuIAowMDAwNjYzOTAxIDAwMDAwIG4gCjAwMDA2NjM5ODMgMDAwMDAgbiAKMDAwMDY2NDEyMyAwMDAwMCBuIAowMDAwNjY0MjY1IDAwMDAwIG4gCjAwMDA2NjQzNDcgMDAwMDAgbiAKMDAwMDY2NDQ4NyAwMDAwMCBuIAowMDAwNjY0NjI5IDAwMDAwIG4gCjAwMDA2NjQ3MTEgMDAwMDAgbiAKMDAwMDY2NDg1MSAwMDAwMCBuIAowMDAwNjY0OTkzIDAwMDAwIG4gCjAwMDA2NjUwNzUgMDAwMDAgbiAKMDAwMDY2NTIxNSAwMDAwMCBuIAowMDAwNjY1MzU3IDAwMDAwIG4gCjAwMDA2NjU0MzkgMDAwMDAgbiAKMDAwMDY2NTU3OSAwMDAwMCBuIAowMDAwNjY1NzIxIDAwMDAwIG4gCjAwMDA2NjU4MDMgMDAwMDAgbiAKMDAwMDY2NTk0MyAwMDAwMCBuIAowMDAwNjY2MDg1IDAwMDAwIG4gCjAwMDA2NjYxNjUgMDAwMDAgbiAKMDAwMDY2NjMwNCAwMDAwMCBuIAowMDAwNjY2NDQ2IDAwMDAwIG4gCjAwMDA2NjY1MjggMDAwMDAgbiAKMDAwMDY2NjY2OCAwMDAwMCBuIAowMDAwNjY2ODEwIDAwMDAwIG4gCjAwMDA2NjY4OTIgMDAwMDAgbiAKMDAwMDY2NzAzMiAwMDAwMCBuIAowMDAwNjY3MTc0IDAwMDAwIG4gCjAwMDA2NjcyNTUgMDAwMDAgbiAKMDAwMDY2NzM5NSAwMDAwMCBuIAowMDAwNjY3NTM3IDAwMDAwIG4gCjAwMDA2Njc2MTkgMDAwMDAgbiAKMDAwMDY2Nzc1OSAwMDAwMCBuIAowMDAwNjY3OTAxIDAwMDAwIG4gCjAwMDA2Njc5ODMgMDAwMDAgbiAKMDAwMDY2ODEyMyAwMDAwMCBuIAowMDAwNjY4MjY1IDAwMDAwIG4gCjAwMDA2NjgzNDcgMDAwMDAgbiAKMDAwMDY2ODQ4NyAwMDAwMCBuIAowMDAwNjY4NjI5IDAwMDAwIG4gCjAwMDA2Njg3MTEgMDAwMDAgbiAKMDAwMDY2ODg1MSAwMDAwMCBuIAowMDAwNjY4OTkzIDAwMDAwIG4gCjAwMDA2NjkwNzQgMDAwMDAgbiAKMDAwMDY2OTIxNCAwMDAwMCBuIAowMDAwNjY5MzU2IDAwMDAwIG4gCjAwMDA2Njk0MzggMDAwMDAgbiAKMDAwMDY2OTU3OCAwMDAwMCBuIAowMDAwNjY5NzIwIDAwMDAwIG4gCjAwMDA2Njk4MDAgMDAwMDAgbiAKMDAwMDY2OTk0MCAwMDAwMCBuIAowMDAwNjcwMDgyIDAwMDAwIG4gCjAwMDA2NzAxNjQgMDAwMDAgbiAKMDAwMDY3MDMwNCAwMDAwMCBuIAowMDAwNjcwNDQ2IDAwMDAwIG4gCjAwMDA2NzA1MjggMDAwMDAgbiAKMDAwMDY3MDY2OCAwMDAwMCBuIAowMDAwNjcwODEwIDAwMDAwIG4gCjAwMDA2NzA4OTIgMDAwMDAgbiAKMDAwMDY3MTAzMiAwMDAwMCBuIAowMDAwNjcxMTc0IDAwMDAwIG4gCjAwMDA2NzEyNTYgMDAwMDAgbiAKMDAwMDY3MTM5NiAwMDAwMCBuIAowMDAwNjcxNTM4IDAwMDAwIG4gCjAwMDA2NzE2MjAgMDAwMDAgbiAKMDAwMDY3MTc1OSAwMDAwMCBuIAowMDAwNjcxOTAxIDAwMDAwIG4gCjAwMDA2NzE5ODMgMDAwMDAgbiAKMDAwMDY3MjEyMyAwMDAwMCBuIAowMDAwNjcyMjY1IDAwMDAwIG4gCjAwMDA2NzIzNDYgMDAwMDAgbiAKMDAwMDY3MjQ4NiAwMDAwMCBuIAowMDAwNjcyNjI4IDAwMDAwIG4gCjAwMDA2NzI3MTAgMDAwMDAgbiAKMDAwMDY3Mjg1MCAwMDAwMCBuIAowMDAwNjcyOTkyIDAwMDAwIG4gCjAwMDA2NzMwNzQgMDAwMDAgbiAKMDAwMDY3MzIxNCAwMDAwMCBuIAowMDAwNjczMzU2IDAwMDAwIG4gCjAwMDA2NzM0MzYgMDAwMDAgbiAKMDAwMDY3MzU3NiAwMDAwMCBuIAowMDAwNjczNzE4IDAwMDAwIG4gCjAwMDA2NzM3OTggMDAwMDAgbiAKMDAwMDY3MzkzNyAwMDAwMCBuIAowMDAwNjc0MDc5IDAwMDAwIG4gCjAwMDA2NzQxNTkgMDAwMDAgbiAKMDAwMDY3NDI5OSAwMDAwMCBuIAowMDAwNjc0NDQxIDAwMDAwIG4gCjAwMDA2NzQ1MjEgMDAwMDAgbiAKMDAwMDY3NDY2MSAwMDAwMCBuIAowMDAwNjc0ODAzIDAwMDAwIG4gCjAwMDA2NzQ4ODMgMDAwMDAgbiAKMDAwMDY3NTAyMiAwMDAwMCBuIAowMDAwNjc1MTY0IDAwMDAwIG4gCjAwMDA2NzUyNDYgMDAwMDAgbiAKMDAwMDY3NTM4NiAwMDAwMCBuIAowMDAwNjc1NTI4IDAwMDAwIG4gCjAwMDA2NzU2MTAgMDAwMDAgbiAKMDAwMDY3NTc1MCAwMDAwMCBuIAowMDAwNjc1ODkyIDAwMDAwIG4gCjAwMDA2NzU5NzIgMDAwMDAgbiAKMDAwMDY3NjExMCAwMDAwMCBuIAowMDAwNjc2MjUxIDAwMDAwIG4gCjAwMDA2NzYzMzEgMDAwMDAgbiAKMDAwMDY3NjQ2NyAwMDAwMCBuIAowMDAwNjc2NjA3IDAwMDAwIG4gCjAwMDA2NzY2ODcgMDAwMDAgbiAKMDAwMDY3NjgyNCAwMDAwMCBuIAowMDAwNjc2OTY0IDAwMDAwIG4gCjAwMDA2OTU0MzUgMDAwMDAgbiAKMDAwMDY5NTQ1OCAwMDAwMCBuIAowMDAwNjk2MzM1IDAwMDAwIG4gCjAwMDA2OTY1NDkgMDAwMDAgbiAKMDAwMDY5ODc5OSAwMDAwMCBuIAowMDAwNjk4ODIxIDAwMDAwIG4gCjAwMDA2OTkwMTcgMDAwMDAgbiAKMDAwMDcwMTk5MiAwMDAwMCBuIAowMDAwNzAyMDE0IDAwMDAwIG4gCjAwMDA3MDIyMTAgMDAwMDAgbiAKMDAwMDcwNDIyNyAwMDAwMCBuIAowMDAwNzA0MjQ5IDAwMDAwIG4gCjAwMDA3MDQ0NDUgMDAwMDAgbiAKMDAwMDcwNDU2NyAwMDAwMCBuIAowMDAwNzA0NzAzIDAwMDAwIG4gCjAwMDA3MDczNzQgMDAwMDAgbiAKMDAwMDcwNzM5NiAwMDAwMCBuIAowMDAwNzA3NDI1IDAwMDAwIG4gCjAwMDA3MDc2MzkgMDAwMDAgbiAKMDAwMDcwNzc1NCAwMDAwMCBuIAowMDAwNzA3ODkzIDAwMDAwIG4gCjAwMDA3MDc5OTIgMDAwMDAgbiAKMDAwMDcwODEzMiAwMDAwMCBuIAowMDAwNzA5NzQxIDAwMDAwIG4gCjAwMDA3MDk3NjQgMDAwMDAgbiAKMDAwMDcwOTgwMyAwMDAwMCBuIAowMDAwNzEwMDIwIDAwMDAwIG4gCjAwMDA3MTIyODEgMDAwMDAgbiAKMDAwMDcxMjMwNCAwMDAwMCBuIAowMDAwNzE1NjM0IDAwMDAwIG4gCjAwMDA3MTI1ODMgMDAwMDAgbiAKMDAwMDcxMjY2NCAwMDAwMCBuIAowMDAwNzEyODA4IDAwMDAwIG4gCjAwMDA3MTI4OTAgMDAwMDAgbiAKMDAwMDcxMzAzMSAwMDAwMCBuIAowMDAwNzEzMTcxIDAwMDAwIG4gCjAwMDA3MTU1NjIgMDAwMDAgbiAKMDAwMDcxNTU4NSAwMDAwMCBuIAowMDAwNzE1ODUxIDAwMDAwIG4gCjAwMDA3MTc5ODUgMDAwMDAgbiAKMDAwMDcxODAwOCAwMDAwMCBuIAowMDAwNzE4MjA2IDAwMDAwIG4gCjAwMDA3MTk5MjcgMDAwMDAgbiAKMDAwMDcxOTk1MCAwMDAwMCBuIAowMDAwNzIwMTQ4IDAwMDAwIG4gCjAwMDA3MjE4MzMgMDAwMDAgbiAKMDAwMDcyMTg1NiAwMDAwMCBuIAowMDAwNzIyMDU0IDAwMDAwIG4gCjAwMDA3MjQzNTEgMDAwMDAgbiAKMDAwMDcyNDM3NCAwMDAwMCBuIAowMDAwNzI0NTcyIDAwMDAwIG4gCjAwMDA3MjQ2NTMgMDAwMDAgbiAKMDAwMDcyNDc5NSAwMDAwMCBuIAowMDAwNzI0OTM5IDAwMDAwIG4gCjAwMDA3MjUwMjAgMDAwMDAgbiAKMDAwMDcyNTE2MSAwMDAwMCBuIAowMDAwNzI1MzA1IDAwMDAwIG4gCjAwMDA3MjU0NDYgMDAwMDAgbiAKMDAwMDcyNTU5MCAwMDAwMCBuIAowMDAwNzI1NjcxIDAwMDAwIG4gCjAwMDA3MjU4MTMgMDAwMDAgbiAKMDAwMDcyNTk1NyAwMDAwMCBuIAowMDAwNzI2MDk4IDAwMDAwIG4gCjAwMDA3MjYyNDIgMDAwMDAgbiAKMDAwMDcyNjMyNSAwMDAwMCBuIAowMDAwNzI2NDY3IDAwMDAwIG4gCjAwMDA3MjY2MTEgMDAwMDAgbiAKMDAwMDcyNjY5NCAwMDAwMCBuIAowMDAwNzI2ODM2IDAwMDAwIG4gCjAwMDA3MjY5ODAgMDAwMDAgbiAKMDAwMDcyNzA2NCAwMDAwMCBuIAowMDAwNzI3MjA2IDAwMDAwIG4gCjAwMDA3MjczNTAgMDAwMDAgbiAKMDAwMDcyNzQzNCAwMDAwMCBuIAowMDAwNzI3NTc2IDAwMDAwIG4gCjAwMDA3Mjc3MjAgMDAwMDAgbiAKMDAwMDczMzk0NSAwMDAwMCBuIAowMDAwNzMzOTY4IDAwMDAwIG4gCjAwMDA3MzQxNTIgMDAwMDAgbiAKMDAwMDczNDM2OSAwMDAwMCBuIAowMDAwNzM1NjM0IDAwMDAwIG4gCjAwMDA3MzU2NTcgMDAwMDAgbiAKMDAwMDczNTg1NSAwMDAwMCBuIAowMDAwNzM2MTIzIDAwMDAwIG4gCjAwMDA3NTE1ODcgMDAwMDAgbiAKMDAwMDc1MTU2MyAwMDAwMCBuIAowMDAwNzUxNjg3IDAwMDAwIG4gCjAwMDA3NTE3MDggMDAwMDAgbiAKMDAwMDc1MjM5MiAwMDAwMCBuIAowMDAwNzUxODc2IDAwMDAwIG4gCjAwMDA3NTMwMDUgMDAwMDAgbiAKMDAwMDc1MzAyNyAwMDAwMCBuIAowMDAwNzUzMjkwIDAwMDAwIG4gCjAwMDA3NzA2MTkgMDAwMDAgbiAKMDAwMDc3MDU5NSAwMDAwMCBuIAowMDAwNzcwNzI3IDAwMDAwIG4gCjAwMDA3NzA3NDggMDAwMDAgbiAKMDAwMDc3MTQ3NyAwMDAwMCBuIAowMDAwNzcwOTExIDAwMDAwIG4gCjAwMDA3NzIxNTEgMDAwMDAgbiAKMDAwMDc3MjE3MyAwMDAwMCBuIAowMDAwNzcyNDM4IDAwMDAwIG4gCjAwMDA3ODYzNDQgMDAwMDAgbiAKMDAwMDc4NjMyMCAwMDAwMCBuIAowMDAwNzg2NDQ2IDAwMDAwIG4gCjAwMDA3ODY0NjcgMDAwMDAgbiAKMDAwMDc4NzE3NSAwMDAwMCBuIAowMDAwNzg2NjM0IDAwMDAwIG4gCjAwMDA3ODc4MTcgMDAwMDAgbiAKMDAwMDc4ODM4MSAwMDAwMCBuIAowMDAwNzg4NzcwIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxMDg4IDAgUgogIC9JbmZvIDEgMCBSCiAgL0lEIFs8RUUxOUZBMTlDQkRFRTRGMjYxRTZBMzZFNTVGNEQ0Qzk+IDxFRTE5RkExOUNCREVFNEYyNjFFNkEzNkU1NUY0RDRDOT5dCiAgL1NpemUgMTA5MAo+PgpzdGFydHhyZWYKNzg5MjA3CiUlRU9GCg==
en
de
internal
external
public
Misc
Misc Comment
1
current_timestamp
1
current_timestamp
1
0